Ответ 1
Это пространство имен и комнат в общем (socket.io v0.9.8 - обратите внимание, что v1.0 включил полную переписку, поэтому все могло измениться):
- Оба пространства имен (io.of('/nsp')) и номера (socket.join('room')) создаются на стороне сервера
- Несколько пространств имен и несколько комнат совместно используют одно и то же (WebSocket) соединение
- Сервер будет передавать сообщения по кабелю только тем клиентам, которые подключились к /nsp/room, а не к фильтрации на стороне клиента.
Различия :
- пространства имен связаны с клиентом с помощью
io.connect(urlAndNsp)
(клиент будет добавлен в это пространство имен, только если он уже существует на сервере) - номера могут соединяться только на стороне сервера (хотя создание API на стороне сервера, чтобы клиенты могли присоединиться к нему, было простым)
- пространства имен могут быть защита от авторизации
- авторизация недоступна в комнатах, но пользовательская авторизация может быть добавлена к вышеупомянутому, легко создаваемому API на сервере, в случае, если кто-то склонен к использованию комнат
- номера являются частью пространства имен (по умолчанию используется глобальное пространство имен)
- пространства имен всегда внедрены в глобальную область
Чтобы не путать концепцию с именем (пространство или пространство имен), я буду использовать купе, чтобы ссылаться на концепцию, и на два других имени для реализации концепции. Так что если вы
- нужна авторизация для каждого отсека, пространство имен может быть самым простым путем для выполнения
- Если вы хотите иерархически слоистые отсеки (максимум 2 слоя), используйте пространство имен/комнатную комбинацию
- если ваше клиентское приложение состоит из разных частей, которые (не заботятся о себе, кроме отсеков, но) должны быть отделены друг от друга, используйте пространства имен.
Примером для последнего может служить большое клиентское приложение, в котором разные модули, возможно разработанные отдельно (например, сторонние), каждый из которых использует socket.io независимо, используются в одном приложении и хотят использовать одно сетевое соединение.
Не имея на самом деле бенчмаркинга, мне кажется, что вам просто нужны простые отсеки в вашем проекте, чтобы разделить и сгруппировать сообщения, один из них в порядке.
Не уверен, что это ответит на ваш вопрос, но исследование, ведущее к этому ответу, по крайней мере помогло мне увидеть яснее.