1
我有一个聊天,写在node.js和socket.io上。目前我在浏览器中同步用户标签。我注意到,如果用户向服务器和服务器发送事件,我会将事件响应给除了当前套接字(socket.broadcast.to)以外的其他用户,则响应将发送给当前用户(发送请求的人)在其他选项卡。任何建议,以避免这一点?与多个标签同步的Socket.io
我有一个聊天,写在node.js和socket.io上。目前我在浏览器中同步用户标签。我注意到,如果用户向服务器和服务器发送事件,我会将事件响应给除了当前套接字(socket.broadcast.to)以外的其他用户,则响应将发送给当前用户(发送请求的人)在其他选项卡。任何建议,以避免这一点?与多个标签同步的Socket.io
已解决。我刚刚创建了一个连接列表,用于存储用户的用户标识和套接字ID。此外,broadcast.to(room id)呼叫更改为以下片段
var currentSocketIds = getSocketIdsByUserId(currentUid);
var sockets = io.sockets.adapter.rooms[roomId].sockets;
for(var socketId in sockets) {
var isSocketOfCurrentUser = false;
for(var i = 0;i < currentSocketIds.length; i++) {
if(socketId == currentSocketIds[i]) {
io.sockets.connected[socketId].emit('my message', data);
isSocketOfCurrentUser = true;
break;
}
}
if(!isSocketOfCurrentUser) {
io.sockets.connected[socketId].emit('new message', data);
}
}