22

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

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

4

4 回答 4

36

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

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

于 2012-04-11T17:47:32.037 回答
17

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

io.to(socketid).emit('message', 'whatever');
于 2014-07-13T11:14:14.920 回答
1

使用 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对象上的一个属性

于 2018-08-27T21:34:14.790 回答
0

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

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

于 2019-12-26T21:07:53.210 回答