.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
: +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.
Comentario más útil
yo uso io.sockets.adapter.rooms