Подтвердить что ты не робот

Node.js socket.io Как исправить конкретный клиент?

Я хочу "испустить" сообщение конкретному клиенту, который выбран на основе другого сообщения, полученного другим клиентом. Как мне это сделать?

Я думаю о присоединении каждого клиента к своей "комнате", а затем к трансляции. Есть ли лучший способ?

4b9b3361

Ответ 1

ОБНОВЛЕНИЕ для 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);
  });
});

Не тестировалось... но оно должно дать вам идею

Ответ 2

Для socket.io версии 1.0 используйте:

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