Socket.IO - comment puis-je obtenir une liste des sockets connectées/clients?

Je vais essayer d'obtenir une liste de tous les sockets/clients actuellement connectés.

io.sockets ne pas retourner un tableau, malheureusement.

Je sais que je pourrais garder mon propre liste à l'aide d'un tableau, mais ne pense pas que c'est une solution optimale pour 2 raisons:

  1. De la redondance. Socket.IO déjà conserve une copie de cette liste.

  2. Socket.IO fournit une méthode pour fixer arbitrairement les valeurs de champ pour les clients (j'.e: socket.set('nickname', 'superman')) donc j'aurais besoin pour faire face à ces changements si j'étais à maintenir mon propre liste.

Aider?

  • Ne pouvez-vous pas tout simplement de convertir io.douilles à un tableau?
  • Non, io.sockets est en fait un objet complexe et ne se contente pas de stocker une liste d'objets socket. Pour l'instant, je vais gérer ma propre liste d'objets utilisateur et d'éviter à l'aide de la douille.fonction set ().
  • Dans 0.7.6 io.les sockets.sockets est un simple objet de hachage id => socket
  • J'ai remarqué que, mais il se comporte de façon étrange (ne semble pas être prise standard des objets). Pour exemple, j'ai essayé: pastebin.com/fxuzVckS mais c'est dire le socket ne contient pas de 'get' méthode.
  • socket est id, io.sockets.sockets[socket] est le support.
  • La droite. Qui fait sens. J'ai essayé le code suivant: pastebin.com/kJcHzpvV et il semble que le surnom de retourner null. Ce que je fais mal?
  • Premier argument est err et si vous êtes en utilisant la mémoire de magasin, c'est toujours null. .get('nickname', function(err, nickname) { ... })

InformationsquelleAutor Andy Hin | 2011-07-03