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