Допустим, я создаю приложение для чата, и оно должно поддерживать функцию переключения каналов. У меня есть два пользователя в чате канала 1 и другие 2 пользователя в чате канала 2. Клиенты получают обновления через WebSocket.
Проблема в том, что пользователи канала 1 также получают уведомления Websocket, когда другие пользователи разговаривают на канале 2, потому что WebSocket рассылает уведомления всем подключенным клиентам. Как я могу гарантировать, что мой WebSocket будет транслировать только подключенным клиентам на данном канале?
Решение, которое я сейчас использую, - это фильтровать уведомления Websocket на стороне клиента (я могу это делать, потому что каждое сообщение с уведомлением имеет идентификатор канала), но это не лучший способ решить эту проблему.
Я использую пакет ws npm для моей серверной части Node.js.
Заранее спасибо!
@tadman Спасибо! Я действительно думал об этом. Но текущая кодовая база использует пакет ws. Итак, нет способа справиться с разделением каналов с помощью собственного WebSocket?
Есть, но вы в конечном итоге создадите свою собственную версию socket.io, поскольку вам нужно написать как код разветвления сервера, часть публикации, так и клиентскую часть подписчика. Вероятно, проще просто поменять один пакет на другой, так как в любом случае они оба являются JavaScript.
@tadman Понял! Большое спасибо





Вы можете использовать такую абстракцию, как socket.io, которая более формально обрабатывает разделение каналов. Что вам нужно, так это правильная модель pub-sub.