.clients([room], fn);
para obter uma lista de ids de soquete em uma sala. Enviei um PR para @FREEZX por adicionar o método .roomClients([socketid],fn)
também para obter uma lista de salas em que o ID do soquete está.Isso era possível na 0.9.x com io.sockets.manager.roomClients[socket_id]
e costumava funcionar em vários nós quando usado com o RedisStore.
Também foi possível obter um hash de todos os quartos com io.sockets.manager.rooms
mas não vejo isso disponível na versão 1.x. Existe io.sockets.adapter.rooms
mas isso não funciona em nós, tanto quanto posso ver.
É possível obter esses dados usando as duas funções acima. Primeiro pegue todos os IDs de soquete na sala '' e chame roomClients repetidamente para obter as salas e mesclá-las, mas isso significa fazer n chamadas para roomClients, onde, como era tão simples quanto ler o objeto io.sockets.manager.rooms
em 0.9.x
: +1:
+1 neste. Você não pode nem fazer um sistema de bate-papo decente sem a capacidade de listar salas.
(E)
: +1:
Alguém tem uma solução para obter acesso a todos os quartos?
Fechado 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)
});
Estou usando 2.0.4 e io.adapter.allRooms não funciona. Qualquer ideia?
eu uso io.sockets.adapter.rooms
@wangdalang você pode mostrar um exemplo de código e um link para documentos para isso. Eu não consigo encontrá-lo.
Comentários muito úteis
eu uso io.sockets.adapter.rooms