Comment obtenir de la salle à la liste des clients dans le support.io 1.0
Je peux obtenir de la salle à la liste des clients avec ce code dans le support.io 0.9.
io.sockets.clients(roomName)
Comment puis-je faire cela dans le support.io 1.0?
- Cochez cette stackoverflow.com/questions/6563885/...
- Et ceci: stackoverflow.com/questions/9352549/...
Vous devez vous connecter pour publier un commentaire.
Considérer cette réponse plus complète liée dans un commentaire ci-dessus sur la question: https://stackoverflow.com/a/24425207/1449799
Les clients dans une pièce peut être trouvé à
C'est un tableau associatif avec les clés que sont les id de socket. Dans notre cas, nous voulions connaître le nombre de clients dans une chambre, donc nous n'avons
Object.keys(io.nsps[yourNamespace].adapter.rooms[roomName]).length
Dans le cas où vous n'avez pas vu/utilisé les espaces de noms (comme ce gars[me]), vous pouvez apprendre à leur sujet ici http://socket.io/docs/rooms-and-namespaces/ (important: l'espace de noms par défaut est '/')
Mis à jour (esp. pour @Zettam):
caisse des pensions de voir ce travail: https://github.com/thegreatmichael/socket-io-clients
À l'aide de @ryan_Hdot lien, j'ai fait une petite temporaire de fonction dans mon code, ce qui évite le maintien d'un patch. Ici, il est :
Cas d'utilisation d'un espace de noms :
Que j'utilise comme une solution temporaire pour
io.sockets.clients(roomId)
qui devientfindClientsSocketByRoomId(roomId)
.EDIT :
La plupart du temps, il est utile d'envisager d'éviter d'utiliser cette méthode si possible.
Ce que je fais maintenant c'est que j'ai l'habitude de mettre un client dans sa propre chambre (ie. dans une pièce dont le nom est c'est clientID). J'ai trouvé le code plus lisible de cette façon, et je n'ai pas à compter sur cette solution de contournement plus.
Aussi, je n'ai pas testé avec un Redis adaptateur.
Si vous devez, voir aussi cette question relative à la si vous utilisez les espaces de noms.
Pour ceux d'entre vous qui utilisent les espaces de noms j'ai fait une fonction aussi ce qui permet de gérer les différents espaces de noms. Il est tout à fait la même que la réponse de la lnh.
Vous pouvez voir ce pull request sur github. pour une discussion sur le sujet, cependant, il semble que cette fonctionnalité a été retirée de la 1.0 pre release candidate pour SocketIO.
À tout le moins au 1.4.5 nha méthode ne fonctionne plus non plus, et il n'y a pas encore d'api publique pour obtenir des clients dans une chambre. Voici ce qui fonctionne pour moi.
io.sockets.adapter.rooms[roomId]
retourne un objet qui a deux propriétés, des sockets, et de la longueur. La première est un autre objet qui a socketId pour les clés, les booléens et les valeurs:Donc mon code pour obtenir des clients ressemble à ceci: