接続されたユーザーにのみ転送-v 1

4534 ワード

現在の状況では、部屋を建てる機能はありません.したがって、ウィンドウが開いている場合は、無条件に接続されます.
しかし,接続したユーザにのみ伝達する機能を実現したい.
const users = {};

io.on('connection', (socket) => {
  console.log(socket.id + "is connected.");
  users[socket.id] = socket;

  socket.on('chat message', (message) => {
    for (const user in users) {
      io.to(user).emit('chat message', message);
    }
  });
  
  socket.on('disconnect', () => {
    console.log(socket.id + 'is disconnected.');
    delete users[socket.id];
  });
});
まず、ユーザーを識別するキーとしてsocket.idの値を使用するusersというオブジェクトを作成し、valueはsocketオブジェクト自体を渡します.
その後、chat messsageイベントが発生した場合、chat messageのみが登録ユーザにブロードキャストされる.
この場合、valueに格納されたsocketオブジェクトのconnectedパーセントによって、ユーザが接続されているかどうかを決定することができるが、このような検査は必要ない.
これは、disconnectイベントが発生すると、対応するユーザデータが削除されるためです.もちろん、今後は様々な機能が加わるにつれて異なるかもしれませんが、これで十分だと思います.

実行結果



独自接続の場合でも、自分から送信したメッセージが画面に出力されます.

2人でメッセージをやりとりする内容も画面にうまく記録できます.