WebSocketDemo icon indicating copy to clipboard operation
WebSocketDemo copied to clipboard

多连接时接收数据经常错乱

Open panyingdaoz opened this issue 1 year ago • 0 comments

当接收到数据后,连接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) } }

panyingdaoz avatar Feb 21 '24 03:02 panyingdaoz