socket.io - 向某些用户广播

Mar*_*sov 6 javascript websocket node.js socket.io

我需要使用websockets(socket.io + node.js)构建twosome聊天.所以,向所有用户广播消息的简单示例:

socket.on('user message', function (msg) {
    socket.broadcast.emit('user message', socket.nickname, msg);
  });
Run Code Online (Sandbox Code Playgroud)

但是,如何将其从特定用户广播到特定用户?

fre*_*ish 18

有两种可能性:

1)每个套接字都有自己唯一的ID存储socket.id.如果您知道两个用户的ID,那么您可以简单地使用

io.sockets[id].emit(...)
Run Code Online (Sandbox Code Playgroud)

2)定义您自己的ID(例如用户名)并使用

socket.join('priv/John');
Run Code Online (Sandbox Code Playgroud)

connection处理程序.现在,只要你想发送消息John,你就可以了

socket.broadcast.to('priv/John').emit(...)
Run Code Online (Sandbox Code Playgroud)

旁注:提供的第一个解决方案无法扩展到多台机器,所以我建议使用第二个.

  • 我用rails存储用户在MySQL中,那么,如何将用户ID从db与socket id联系起来呢? (2认同)