2011-02-09 1 views
0

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

+0

http://stackoverflow.com/questions/4445883/node-websocket-server-possible-to-have-multiple-separate-broadcasts-for-a-sin –

ответ

3

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

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

1

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

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

Затем на главном объекте Io сделать что-то вроде:

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

сообщения будет выходить на все соединения, которые .join() 'd данной комнаты.

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

Смежные вопросы