我需要使用 websockets (socket.io + node.js) 建立两个聊天。因此,向所有用户广播消息的简单示例:
socket.on('user message', function (msg) {
socket.broadcast.emit('user message', socket.nickname, msg);
});
但是我怎样才能从某个用户向某个用户广播呢?
我需要使用 websockets (socket.io + node.js) 建立两个聊天。因此,向所有用户广播消息的简单示例:
socket.on('user message', function (msg) {
socket.broadcast.emit('user message', socket.nickname, msg);
});
但是我怎样才能从某个用户向某个用户广播呢?
有两种可能:
1)每个套接字都有自己唯一的 ID 存储在socket.id
. 如果您知道两个用户的 ID,那么您可以简单地使用
io.sockets[id].emit(...)
2)定义您自己的ID(例如用户名)并使用
socket.join('priv/John');
在connection
处理程序中。现在,只要您只想发送消息到John
,您只需执行
socket.broadcast.to('priv/John').emit(...)
旁注:提供的第一个解决方案不能扩展到多台机器,所以我建议使用第二个。
您可以使用该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