socket.io obtenir des chambres dont la socket est actuellement
Est-il possible de trouver des chambres d'hôtel qui socket est actuellement en, sans appel
io.sockets.clients(roomName)
pour chaque nom de la salle et à la recherche de cette prise en résultats
source d'informationauteur Herokiller
Vous devez vous connecter pour publier un commentaire.
De la Socket.IO Salle de doc:
io.sockets.manager.roomClients[socket.id]
Dans le support.io version 1+ la syntaxe est la suivante:
socket.io 1.7.3+ ->
Lors de l'utilisation d'un non par défaut de l'adaptateurcomme support.io-redis,
socket.rooms
ne semble pas faire l'affaire. La façon dont j'ai réussi à obtenir les chambres pour un client spécifique sans boucle était d'utiliserio.sockets.adapter.sids[socket.id]
qui renvoie les chambres comme un objet.Noter que ce ne sont pas prises sur d'autres processus, si!
socket.io v1.3.7, socket.io-redis 1.0.0
Version 1.7.3,
socket.rooms
contientsocket.id
donc l'enlever et obtenir la liste de chambres:Dans d'autres version, vous pouvez imprimer la
socket
et trouver les chambres.socket.io 1.7.3 +
De la Version 2.0.3
Que d'égal à égal avec
Vous pouvez gagner de la place dans le support lui-même lorsqu'il se joint à une salle de
Plus tard, vous pouvez récupérer toutes les chambres que le support est simplement
Être sûr que le socket est en une seule pièce à la fois, ma solution a été:
1.4.5 version =>
io.sockets.adapter.rooms[roomname].sockets