Socket.io: Como obter todos os quartos

Criado em 21 nov. 2014  ·  9Comentários  ·  Fonte: socketio/socket.io

1630 já adiciona suporte para .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

enhancement

Comentários muito úteis

eu uso io.sockets.adapter.rooms

Todos 9 comentários

: +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.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

dmuth picture dmuth  ·  3Comentários

gCurtisCT picture gCurtisCT  ·  4Comentários

thebinarypenguin picture thebinarypenguin  ·  4Comentários

MyMomSaysIAmSpecial picture MyMomSaysIAmSpecial  ·  4Comentários

adammw picture adammw  ·  4Comentários