WebSocketDemo
WebSocketDemo copied to clipboard
多连接时接收数据经常错乱
当接收到数据后,连接1回调经常接收到其它连接返回的数据,回调的数据完全乱了;数据的接收是10-50毫秒级的 我连接配置代码如下 for (i in 0..7) { val socketSettings = WebSocketSetting() val url = getSocketUrl(i) LogUtil.e("webSocket初始化 $i 地址:$url") //连接地址,必填,例如 wss://echo.websocket.org socketSettings.connectUrl = url //必填 //设置连接超时时间 socketSettings.connectTimeout = 5 * 1000 //设置心跳间隔时间 socketSettings.connectionLostTimeout = 60 //设置断开后的重连次数,可以设置的很大,不会有什么性能上的影响 socketSettings.reconnectFrequency = 60
//设置消息分发器,接收到数据后先进入该类中处理,处理完再发送到下游
socketSettings.setResponseProcessDispatcher(AppResponseDispatcher())
//接收到数据后是否放入子线程处理,只有设置了 ResponseProcessDispatcher 才有意义
socketSettings.setProcessDataOnBackground(true)
//需要调用 WebSocketHandler.registerNetworkChangedReceiver(context) 方法注册网络监听广播
socketSettings.setReconnectWithNetworkChanged(true)
val manager = getWebSocketManager(i, url, socketSettings)
//启动连接
manager.start()
}
//注意,需要在 AndroidManifest 中配置网络状态获取权限
//注册网路连接状态变化广播
WebSocketHandler.registerNetworkChangedReceiver(this)
下面是监听添加代码 private fun addListener() { // socket监听 WebSocketHandler.getWebSocket(MyApplication.getWst(0)).addListener(socketListener0) WebSocketHandler.getWebSocket(MyApplication.getWst(1)).addListener(socketListener1) WebSocketHandler.getWebSocket(MyApplication.getWst(2)).addListener(socketListener2) WebSocketHandler.getWebSocket(MyApplication.getWst(3)).addListener(socketListener3) WebSocketHandler.getWebSocket(MyApplication.getWst(4)).addListener(socketListener4) ThreadPoolManager.getInstance().execute { WebSocketHandler.getWebSocket(MyApplication.getWst(5)).addListener(socketListener5) WebSocketHandler.getWebSocket(MyApplication.getWst(6)).addListener(socketListener6) WebSocketHandler.getWebSocket(MyApplication.getWst(99)).addListener(socketListener99) } }