2014-11-09 2 views
0

Я изо всех сил пытался найти эффективный способ получить количество клиентов, подключенных к комнате в socket.io. Мне посоветовали посмотреть в эту тему: How to get room's clients list in socket.io 1.0 Однако ни одно из решений в настоящее время не работает в этой теме, кроме тех, которые проверяют каждый отдельный коннектированный сокет и их комнаты, чтобы отображать клише одной комнаты.(количество) клиентов, подключенных к комнате в socket.io

Поэтому мне нужно еще раз спросить: какой (самый эффективный) способ получить (количество) клиентов в комнате в socket.io?

+0

Не можете ли вы сохранить счет при подключении нового пользователя? И обрабатывайте его соответствующим образом, когда какой-либо пользователь отключается. Он работает, все проблемы с ним? – Aravind

+0

@aravind Я могу, конечно, справиться с этим вручную разными способами, но мне бы хотелось узнать об оптимальном способе (в настоящее время) справиться с этим. Поскольку у socket.io нет полной и актуальной документации/api в любом месте, лучше спросить здесь. – Mia

+0

Zettam: Я использовал сокет давным-давно, и я использовал только базовый api. :) Я тоже хотел бы знать о хорошем! – Aravind

ответ

0

io.nsps[yourNamespace].adapter.rooms[roomName] // default namespace is '/'

возвращает объект клиентов с логическим значением или undefined если нет клиентов. В большинстве случаев вы можете получить длину этого объекта с

Object.keys(io.nsps[yourNamespace].adapter.rooms[roomName]).length

но это только будет работать, если есть хотя бы один клиент подключен, в связи с неопределенными вернулся.

Если вы не используете какое-либо конкретное пространство имен, вместо этого вы можете использовать io.sockets.adapter.rooms[roomName].

По умолчанию, когда клиент отключается, он покидает комнату, тогда этот способ сработал для меня.

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