java - 有时重复的消息在套接字中突然接收和发送
问题描述
我在使用简单的 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")
未注册。
解决方案
推荐阅读
- php - 如何读取 FTP 服务器的 CSV 文件?
- windows - Inno Setup:uninsrestartdelete 标志有时不起作用
- symfony - 使用 Sonata 管理员导出用户角色
- excel - 如何下载 excel 模板将在 Laravel Excel 3.1 中仅显示标题?
- rest - 任何人都可以从 Alpha Vantage 取回英国的任何数据吗?
- python - 树莓派上的“ValueError:负数返回字节(bytearray(seq))”
- python - 使用 REGEX PYTHON 的清洁列表
- amazon-web-services - AWS Fargate - 如何使用 python boto3 获取任务的公共 IP 地址
- android - 在 react native 上更改 FLIPPER_VERSION 会产生 BUILD FAILED 输出
- asp.net-core - Asp .Net Core - X-Paged-List 省略号问题