2017-02-28 9 views
1

私はnode.jsとsocket.ioで書かれたチャットを持っています。そして、現時点では、ブラウザのユーザータブを同期させています。そして、ユーザーがサーバーとサーバー上でイベントを発生させると、現在のソケット(socket.broadcast.to)以外の部屋のユーザーにイベントで応答すると、他のタブの現在のユーザー(要求を送信したユーザー)に応答が送信されることに気付きました。これを避けるための提案はありますか?複数のタブと同期するSocket.io

答えて

1

解決済み。私はちょうどユーザーIDとユーザーのソケット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); 
    } 
} 
関連する問題