У меня есть веб-сервер Node.js, который запускает сервер сокетов сверху, который был создан с помощью Socket.io. В принципе, это работает.
Теперь я хочу достичь того, что клиенты, которые подключаются, группируются в группы. Таким образом, могут быть некоторые клиенты, которые составляют группу A и некоторые другие клиенты, которые составляют группу B. Они должны выбрать, к какой группе они принадлежат, перейдя по определенному URL-адресу: localhost:3000/A
или localhost:3000/B
.
В Socket.io Теперь я хочу отправлять сообщения всем клиентам в группе A или ко всем клиентам группы B или ко всем клиентам, не глядя на их группу.
В основном, это общение с комнатами, и у вас есть сообщения для всех клиентов в определенной комнате или для любого клиента, независимо от того, в какой комнате он находится.
Каков наилучший способ создания такой системы с помощью Socket.io?
Я пытаюсь использовать пространство имен до сих пор, что в основном работает для создания групп A и B, но затем я теряю возможность отправлять сообщения всем клиентам, независимо от того, в какой комнате они находятся. По крайней мере, я не знаю как это сделать.
Как мне это моделировать? Какие правильные условия я должен искать?
ОБНОВЛЕНИЕ: В соответствии с ответом @sdedelbrock я мог бы использовать пространство имен или комнаты:
- Если использовать пространства имен, я не могу долго отправлять их всем независимо от их пространства имен. Это связано с тем, что
io.sockets
является ярлыком дляio.of('')
, который, конечно, больше не соответствует пространству имен. - Это означает, что я должен использовать комнаты, но мне интересно, что такое семантическая разница между комнатой и пространством имен.
Сократить это: почему существуют две концепции для одной и той же (?) идеи?