Отправка сообщения определенной группе клиентов в socketio

Каков наилучший способ отправить сообщение через сокет io группе пользователей, например, только тем, кто находится в определенной комнате чата, а не всем пользователям?

Мне известно об отправке данных только выбранным пользователям с использованием Socket .io-node, но версия socketio .7 была выпущена недавно, и кажется, что может быть более элегантный способ с новым API, используя либо get/set, либо пространство имен?


person jhchen    schedule 29.07.2011    source источник


Ответы (1)


Я думаю, вам следует посмотреть концепцию комнаты:

Номера

Иногда хочется разместить определенные розетки в одной комнате, чтобы было легко вещать на все сразу.

Думайте об этом как о встроенных каналах для сокетов. Розетки соединяются и оставляют комнаты в каждой розетке.

Сторона сервера:

var io = require('socket.io').listen(80);

io.sockets.on('connection', function (socket) {
  socket.join('justin bieber fans');
  socket.broadcast.to('justin bieber fans').emit('new fan');
  io.sockets.in('rammstein fans').emit('new non-fan');
});
person Alfred    schedule 29.07.2011
comment
В этом примере все будут участниками комнаты justin bieber fans. Предположим, что при подключении клиент отправил идентификатор группы, членом которой он был, можно ли просто создать комнату и передать ее в комнату, используя переменную, например `group${groupID}`? - person John; 15.01.2020