node.js socket.io如何向特定客户端发送?

sri*_*hhs 23 node.js socket.io

我想向特定客户端"发出"消息,该消息是根据在不同客户端收到的另一条消息选择的,我该怎么做?

我正在考虑将每个客户加入他们自己的"房间",然后进行广播.有没有更好的办法?

Fra*_*ita 32

更新socket.io版本1.0及更高版本

io.to(socketid).emit('message', 'whatever');
Run Code Online (Sandbox Code Playgroud)

对于旧版本:

您可以将每个客户端作为属性存储在对象中.然后,您可以根据消息查找套接字:

var basket = {};

io.sockets.on('connection', function (socket) {
  socket.on("register", function(data) {
    basket[data.nickname] = socket.id;
  });
  socket.on("privmessage", function(data){
    var to = basket[data.to];
    io.sockets.socket(to).emit(data.msg);
  });
});
Run Code Online (Sandbox Code Playgroud)

没有测试......但它应该给你一个想法

  • 它如何与reddiss一起使用?我想在分布式负载平衡环境中做同样的事情. (2认同)
  • 对于1.0版,我们需要使用io.to(socketId).emit('pm',{}); 就像@Minho Lee说的那样 (2认同)

小智 18

对于socket.io 1.0版,请使用:

io.to(socketid).emit('message', 'whatever');
Run Code Online (Sandbox Code Playgroud)