Miq*_*iqe 8 java android websocket socket.io socket.io-1.0
我在我的 android 项目的节点服务器上使用socket.io-client.java和socket.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)
我在我的 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)