我需要使用websockets(socket.io + node.js)构建twosome聊天。 因此,向所有用户广播消息的简单示例:
socket.on('user message', function (msg) {
socket.broadcast.emit('user message', socket.nickname, msg);
});
但是如何将其从特定用户广播到特定用户?
答案 0 :(得分:17)
有两种可能性:
1)每个套接字都有自己的唯一ID存储在socket.id
中。如果您知道两个用户的ID,那么您只需使用
io.sockets[id].emit(...)
2)定义您自己的ID(例如用户名)并使用
socket.join('priv/John');
connection
处理程序中的。现在,只要您想要向John
发送消息,您只需执行
socket.broadcast.to('priv/John').emit(...)
附注:提供的第一个解决方案无法扩展到多台计算机,因此我建议使用第二个解决方案。
答案 1 :(得分:1)
您可以使用socket.join(...)
函数来提供组:
socket.on('init', function(user) {
if (user.type == 'dog') {
socket.join('dogs');
}
else {
socket.join('cats');
}
});
...
io.to('dogs').emit('food', 'bone'); // Only dogs will receive it
io.to('cats').emit('food', 'milk'); // Only cats will receive it