2011-11-04 10 views
6

Sto cercando di ottenere tutti gli oggetti socket da io.sockets e iterare su ciascuno di essi.Recupero di tutti gli oggetti socket in io.socket

Qualcosa di simile:

for (socket in io.sockets.something()) { 
    // do something with each socket 
} 

O io sto facendo questo torto o devo essere manca qualcosa. Pensieri?

+0

Quindi, qual è il problema o la domanda? – thejh

+0

Perché lo senti? –

+0

Sono solo curioso, quale sarebbe il caso d'uso per questo? – alessioalex

risposta

14

Il metodo ufficiale è:

io.sockets.clients().forEach(function (socket) { .. }); 

o filtrare dalle stanze:

io.sockets.clients('roomname') .. same as above .. 

Questo è consigliato sopra il suggerimento di cui sopra come socket.io è struttura interna di dati potrebbe sempre essere soggetto a modifiche e potenzialmente rompere tutto il tuo codice con aggiornamenti futuri. È molto meno a rischio quando si utilizza questo metodo official.

+2

Questa è la mia unica lamentela riguardo al fantastico Socket.io: sebbene ci siano un sacco di [esempi] (http://socket.io/#how-to-use), non c'è alcuna documentazione API concisa, lasciandomi indovinare la mia strada al mio primo suggerimento. – josh3736

+0

Questo è esattamente quello che stavo cercando. Grazie. –

+1

josh3736 sì la documentazione è un po 'un punto debole. probabilmente dovremmo eseguire uno strumento JSDoc sul nostro codice per creare una piccola documentazione API. – 3rdEden

2

Questo può o non può essere 'documentato', ma funziona:

for (var id in io.sockets.sockets) { 
    var s = io.sockets.sockets[id]; 
    if (!s.disconnected) { 
     // ... 
     // for example, s.emit('event', { ... }); 
    } 
} 

Uso io.sockets.clients():

io.sockets.clients().forEach(function(s) { 
    // ... 
    // for example, s.emit('event', { ... }); 
}); 

È possibile utilizzare l'eccellente node-inspector da allegare al app e ispezionare il contenuto di s.

+0

Questo è esattamente ciò di cui avevo bisogno. Ispezionare me.sockets mi ha reso evidente. Mi rendo conto che la mia domanda non era chiara, grazie per aver risposto. –

Problemi correlati