3

当我在 3G 移动网络(互联网连接速度慢)上测试我的真实聊天应用程序时, Socket.io反复断开连接然后重新连接。我已经记录了原因。它说"xhr post error"哪个加注"transport error"然后断开连接。

我可以知道这个错误是什么意思,"xhr post error"为什么在连接缓慢时出现这个错误以及如何解决这个问题?

我正在使用socket.io-client.java版本 0.4.2

4

2 回答 2

2

我认为你应该transports在你的客户端设置使用 websockets。

尝试这个:

IO.Options opts = new IO.Options();
opts.transports = new String[]{"websocket"};
mSocket = IO.socket(SOCKET_SERVER, opts);

更新 另外,尝试将您的客户端库更新到 5.1+。

于 2015-07-02T14:28:40.477 回答
2

首先将依赖项更新为1.0.0

implementation ('io.socket:socket.io-client:1.0.0') {
        // excluding org.json which is provided by Android
        exclude group: 'org.json', module: 'json'
 }

并创建optionwithtransport

val ioOption = IO.Options().apply {
            query = /*..*/
            reconnection = /*..*/
            transports = arrayOf("websocket")
        }

然后用它创建套接字连接option

try {
      socket = IO.socket(baseUrl, ioOption)
     } catch (e: URISyntaxException) {
       e.printStackTrace()
     }

 socket.connect()

然后听EVENT_RECONNECT_ATTEMPT

socket.on(Socket.EVENT_RECONNECT_ATTEMPT) {
            ioOption.transports = arrayOf("polling", "websocket")
}

引擎盖下没有魔法,只需执行文件告诉的内容。阅读更多

注意:您可以更改适当transport的名称,这里我使用websocket与文档相同。

于 2020-06-11T03:38:09.930 回答