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

时间:2012-04-11 16:50:08

标签: node.js socket.io

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

我正在考虑将每个客户加入他们自己的“房间”,然后进行广播。还有更好的方法吗?

4 个答案:

答案 0 :(得分:30)

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

io.to(socketid).emit('message', 'whatever');

旧版本:

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

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);
  });
});

未经测试......但它应该给你一个想法

答案 1 :(得分:18)

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

io.to(socketid).emit('message', 'whatever');

答案 2 :(得分:0)

使用socketID发送给特定的客户端。

服务器/程序包:socket.io:

io.to(socketID).emit('testEvent', 'yourMessage');

客户端/程序包socket.io-client:

io.sockets.on('connection',(socket) => {
  socket.on("testEvent", data => {
    console.log(data);
  });
});

您可以通过以下方式访问socketID:

io.on('connection', (socket, next) => {
    const ID = socket.id // id property on the socket Object
})

它只是socket对象上的一个属性

答案 3 :(得分:0)

对于socket.io v1.0 <使用:

io.to(socketID).emit('testEvent', 'yourMessage');