壹開始我首選的是采用SocketIO方案,因為考慮該方案封裝接口好,提供異步回調機制,但和後端同事溝通發現目前客戶端的SocketIO不支持ws wss協議, 所以無奈只能放棄。
接著考慮采用Java-WebSocket方案,該方案是websocket的java完整實現,目前github6.5K星,於是考慮導入,但是在實測時發現調用connect,reConnect,如果導致線程異常報錯,網上搜索相關解決方案,並不能有效解決此問題,當然也可能是我沒有更深入分析此問題。
最後考慮采用OkHttp方案,基於OkHttp優秀的線程讀寫控制機制,發現該方案出奇的穩定。
參考文檔: https://square.github.io/okhttp/4.x/okhttp/okhttp3/-web-socket/
以下是對OkHttp websocket的簡單封裝