0xZhangKe / WebSocketDemo

用于简化 WebSocket 在 Android 平台使用的封装方法

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

panyingdaoz opened this issue · 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)
}
}