Отправка данных только выбранным пользователям с помощью Socket.io-узла - PullRequest
0 голосов
/ 09 февраля 2011

Можно ли отправлять данные с помощью socket.io-узла только выбранной группе пользователей? Например, как я могу реализовать чат с разными комнатами? Я не хочу, чтобы .broadcast () отправлял данные всем зарегистрированным пользователям.

Ответы [ 2 ]

3 голосов
/ 09 февраля 2011

Обычно для каждой комнаты у вас должен быть список подключенных пользователей, и у всех этих пользователей есть client объект, который вы должны были где-то хранить. Поэтому, если вы хотите отправить сообщение в определенную комнату, вам просто нужно перебрать подключенного пользователя этой комнаты, получить доступ к его объекту client и отправить данные.

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

1 голос
/ 28 декабря 2011

socket.io имеет встроенную функциональность группировки

В объекте сокета для одного соединения, например, когда вас пропускают при подключении нового пользователя, вы можете вызвать .join ('roomName'), где roomName - этолюбую строку, которую вы хотите использовать для идентификации «комнаты», вы можете использовать имя комнаты, например «профиль / 14», чтобы создать канал для обновления профиля пользователя № 14.

Затем на главном объекте io выполнитечто-то вроде:

io.sockets.in('profile/14').emit('newComment', {message:'hello'});

Сообщение будет отправлено всем соединениям, которые имеют .join () в данной комнате.

Как правило, мой клиент посылает "привет"событие onConnect, которое определяет, на какой контент клиент заинтересован в подписке, а затем на стороне сервера мой обработчик для события «hello» обрабатывает .join (), переводящий клиента в любые необходимые комнаты

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