Socket.io: Cómo conseguir todas las habitaciones

Creado en 21 nov. 2014  ·  9Comentarios  ·  Fuente: socketio/socket.io

1630 ya agrega soporte para .clients([room], fn); para obtener una lista de identificadores de socket en una habitación. Envié un PR a @FREEZX para agregar el método .roomClients([socketid],fn) también para obtener una lista de habitaciones en las que se encuentra la identificación del socket.

Esto era posible en 0.9.x con io.sockets.manager.roomClients[socket_id] y solía funcionar en varios nodos cuando se usaba con RedisStore.

También fue posible obtener un hash de todas las habitaciones con io.sockets.manager.rooms pero no veo esto disponible en 1.x. Hay io.sockets.adapter.rooms pero eso no funciona en los nodos hasta donde puedo ver.

Es posible obtener estos datos utilizando las dos funciones anteriores. Primero obtenga todos los identificadores de socket en room '', luego llame a roomClients repetidamente para obtener las habitaciones y fusionarlas, pero eso significa hacer n llamadas a roomClients, donde era tan simple como leer el objeto io.sockets.manager.rooms en 0.9.x

enhancement

Comentario más útil

yo uso io.sockets.adapter.rooms

Todos 9 comentarios

: +1:

+1 en este. Ni siquiera puedes crear un sistema de chat decente sin la capacidad de enumerar salas.

(Y)

: +1:

¿Alguien tiene una solución para acceder a todas las habitaciones?

Cerrado por https://github.com/socketio/socket.io-redis/pull/168.

io.adapter.allRooms(function (err, rooms) {
  console.log(rooms); // an array containing all rooms (accross every node)
});

Estoy usando 2.0.4 y io.adapter.allRooms no funcionan. ¿Alguna idea?

yo uso io.sockets.adapter.rooms

@wangdalang , ¿puede mostrar un ejemplo de código y un enlace a los documentos para eso? Parece que no puedo encontrarlo.

¿Fue útil esta página
0 / 5 - 0 calificaciones