我在使用简单的Java套接字客户端时遇到问题:正确建立了连接,服务器和客户端都可以接收和发送数据。但是有些时候消息收发是2或4次。我已使用以下库https://github.com/socketio/socket.io-client-java
Application
类中套接字的初始化
public static Socket getSocket() {
if (mSocket == null) {
try {
IO.Options opts = new IO.Options();
String[] opt1 = new String[1];
opt1[0] = "websocket";
opts.transports = opt1;
//opts.reconnection = true;
//opts.reconnection = false;
mSocket = IO.socket(BuildConfig.SOCKETURL);
} catch (URISyntaxException e) {
Log.i("SOCKET", "info>>" + e.getMessage());
throw new RuntimeException(e);
}
}
return mSocket;
}
Activity
类中的接收事件的代码
socket?.on("newMessage", object : Emitter.Listener {
override fun call(vararg args: Any?) {
// logic after call back goes here
}
}
}
})
问题是“ newMessage”事件有时会触发多次,在onDestroy()
事件中有socket?.off("newMessage")
个未注册。