这是我的代码示例,我通过单个套接字发射获得了对同一用户的多个套接字响应。有时它也会在每次服务器重启时增加 +1。
....
socket.emit('groupmessage', {
username: sender_id,
server_chat_id:chat_id,
user_message:"ownmessage",
server_time:server_time,
message: new_message,
action: "ownmessage",
temp: 'new'
});
....
Best Answer-推荐答案 strong>
Its because your socket.on(event, listener) is executed multiple
times (for same event).
这里有一些可能会有所帮助的东西。
关于:通过套接字的响应被附加到 Event 的 Listener 接收。
// Initialize socket
socket = IO.socket(SERVER_URL);
// Turn on event
socket.on(event, listener);
// connect the socket
socket.connect();
// emit data
socket.emit(event, "data");
// disconnect socket
mSocket.disconnect();
// Turn Events Off
socket.off(event, listener);
问题原因:当一个事件被添加到同一个监听器的多个实例时,该 Action 被执行相同的次数。
原因:添加多个监听器可能会导致
- 之前的 Activity 仍然持有对 Connected Socket 的引用,该 Socket 仍然活着,具有相同的 Event。
- 在 Activity 回调中对 Socket 的处理不当,导致
socket.on(event, listener) 和 socket.off(event, listener) 之间的同步失效。
解决方案:
在 onResume() 中打开 ON 事件监听器和 CONNECT 套接字。
DISCONNECT套接字并在onPause()中关闭监听器。
关于android - 使用 socket.io 中的每个 socket.emit 获取多个套接字响应,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/39798620/
|