Socket.io与多个选项卡同步

我有一个聊天,写在node.js和socket.io上。 目前我在浏览器中同步用户标签。 我注意到,如果用户发送事件到服务器和服务器上,我将事件响应给除了当前套接字(socket.broadcast.to)以外的其他用户,那么响应将发送给当前用户(发送请求)在其他选项卡。 任何build议,以避免这一点?

解决了。 我刚刚创build了一个连接列表,存储用户的用户ID和套接字ID。 此外,broadcast.to(房间号)呼叫被改为下面的片段

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); } }