Socket.IO-client.java 反复断开并重新连接

Miq*_*iqe 8 java android websocket socket.io socket.io-1.0

我在我的 android 项目的节点服务器上使用socket.io-client.javasocket.io 1.2.1,android 套接字与服务器连接正常,但几分钟后它会自动断开连接并反复重新连接。我无法弄清楚问题,有人可以帮助我吗?

我正在使用 socket.io-client-0.1.1.jar、engine.io-client-0.2.1.jar 和 Java-WebSocket-1.3.0.jar 库。

这是java代码

private void socketTest() throws URISyntaxException{

    socket = IO.socket("http://192.168.169.2:8082");
    socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {

      @Override
      public void call(Object... args) {
        socket.emit("test", "awesome");

      }

    }).on(Socket.EVENT_DISCONNECT, new Emitter.Listener() {

      @Override
      public void call(Object... args) {}

    });
    socket.connect();

}
Run Code Online (Sandbox Code Playgroud)

这是服务器端代码

io.on('connection', function (socket) {
    console.log('a user connected');
    socket.on('disconnect', function () {
       console.log('user disconnected');
    });

    socket.on('test',function(msg){
       console.log("This is "+msg);
    });
});
Run Code Online (Sandbox Code Playgroud)

这是日志截图

在此处输入图片说明

小智 6

我通过向 socket.io 添加一个无限超时选项解决了这个问题

 IO.Options options = new IO.Options();
 OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder()
        .connectTimeout(0, TimeUnit.MILLISECONDS)
        .readTimeout(0, TimeUnit.MILLISECONDS)
        .writeTimeout(0, TimeUnit.MILLISECONDS);
 options.callFactory = clientBuilder.build();
 socket = IO.socket(URL, options);
Run Code Online (Sandbox Code Playgroud)


Sag*_*hva 4

我在我的 Android 项目中的客户端库上遇到了同样的问题socket.io-client:1.0.0,但在降级版本后socket.io它工作正常。在客户端版本下使用可能会对您有所帮助。

 compile('io.socket:socket.io-client:0.8.3') {
    exclude group: 'org.json', module: 'json'
}
Run Code Online (Sandbox Code Playgroud)