socket.io имеет встроенную функциональность группировки
В объекте сокета для одного соединения, например, когда вас пропускают при подключении нового пользователя, вы можете вызвать .join ('roomName'), где roomName - этолюбую строку, которую вы хотите использовать для идентификации «комнаты», вы можете использовать имя комнаты, например «профиль / 14», чтобы создать канал для обновления профиля пользователя № 14.
Затем на главном объекте io выполнитечто-то вроде:
io.sockets.in('profile/14').emit('newComment', {message:'hello'});
Сообщение будет отправлено всем соединениям, которые имеют .join () в данной комнате.
Как правило, мой клиент посылает "привет"событие onConnect, которое определяет, на какой контент клиент заинтересован в подписке, а затем на стороне сервера мой обработчик для события «hello» обрабатывает .join (), переводящий клиента в любые необходимые комнаты