目前Android WebSocket 框架 主要包括:
SocketIO
Java-WebSocket
OkHttp WebSocket
一开始我首选的是采用SocketIO方案,因为考虑该方案封装接口好,提供异步回调机制,但和后端同事沟通发现目前客户端的SocketIO不支持ws wss协议, 所以无奈只能放弃。
接着考虑采用Java-WebSocket方案,该方案是websocket的java完整实现,目前github6.5K星,于是考虑导入,但是在实测时发现调用connect,reConnect,如果导致线程异常报错,网上搜索相关解决方案,并不能有效解决此问题,当然也可能是我没有更深入分析此问题。
最后考虑采用OkHttp方案,基于OkHttp优秀的线程读写控制机制,发现该方案出奇的稳定。
public class WebSocketHandler extends WebSocketListener {
private static final String TAG = "WebSocketHandler ";
private String wsUrl;
private WebSocket webSocket;
private ConnectStatus status;
private OkHttpClient client = new OkHttpClient.Builder()
.build();
private WebSocketHandler(String wsUrl) {
this.wsUrl = wsUrl;
}