Socket.io: Comment obtenir toutes les chambres

Créé le 21 nov. 2014  ·  9Commentaires  ·  Source: socketio/socket.io

1630 ajoute déjà la prise en charge de .clients([room], fn); pour récupérer une liste d'identifiants de socket dans une salle. J'ai envoyé un PR à @FREEZX pour avoir ajouté la méthode .roomClients([socketid],fn) afin de récupérer une liste des pièces dans lesquelles se trouve l'identifiant de socket.

Cela était possible dans la version 0.9.x avec io.sockets.manager.roomClients[socket_id] et cela fonctionnait sur plusieurs nœuds lorsqu'il était utilisé avec RedisStore.

Il était également possible d'obtenir un hachage de toutes les pièces avec io.sockets.manager.rooms mais je ne vois pas cela disponible dans 1.x. Il y a io.sockets.adapter.rooms mais cela ne fonctionne pas entre les nœuds pour autant que je sache.

Il est possible d'obtenir ces données en utilisant les deux fonctions ci-dessus. Récupérez d'abord tous les identifiants de socket dans la pièce '', puis appelez roomClients à plusieurs reprises pour obtenir les pièces et les fusionner, mais cela signifie faire n appels à roomClients, alors que c'était aussi simple que de lire l'objet io.sockets.manager.rooms dans 0.9.x

enhancement

Commentaire le plus utile

j'utilise io.sockets.adapter.rooms

Tous les 9 commentaires

:+1:

+1 sur celui-ci. Vous ne pouvez même pas créer un système de discussion décent sans la possibilité de répertorier les salles.

(ET)

:+1:

Quelqu'un a-t-il une solution pour accéder à toutes les pièces ?

Fermé par 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)
});

J'utilise 2.0.4 et io.adapter.allRooms ne fonctionne pas. Une idée?

j'utilise io.sockets.adapter.rooms

@wangdalang pouvez-vous s'il vous plaît montrer un exemple de code et un lien vers la documentation pour cela. Je n'arrive pas à le trouver.

Cette page vous a été utile?
0 / 5 - 0 notes