Ho creato un client di chat con diverse chat room in NodeJS, socketIO ed Express. Sto cercando di visualizzare un elenco aggiornato sugli utenti connessi per ogni stanza.Elenco dei nomi utente dei client connessi tramite socket io
C'è un modo per collegare un nome utente per un oggetto così ho potuto vedere tutti i nomi utente quando lo faccio:
var users = io.sockets.clients('room')
e poi fare qualcosa di simile:
users[0].username
In quale altro modi posso farlo?
risolto: Questa è una sorta di un duplicato, ma la soluzione non è scritto molto chiaramente da nessuna parte così avevo pensato lo scrivo qui. Questa è la soluzione dello post entro il Andy Hin a cui è stata data risposta da mak. E anche i commenti in questo post.
Solo per rendere le cose un po 'più chiare. Se si desidera memorizzare qualsiasi cosa su un oggetto socket si può fare questo: ha
socket.set('nickname', 'Guest');
prese anche un metodo get, quindi se si desidera che tutti gli utenti che fare:
for (var socketId in io.sockets.sockets) {
io.sockets.sockets[socketId].get('nickname', function(err, nickname) {
console.log(nickname);
});
}
Come alessioalex rilevare , l'API potrebbe cambiare ed è più sicuro tenere traccia dell'utente da solo. È possibile farlo utilizzando l'ID socket su disconnect.
io.sockets.on('connection', function (socket) {
socket.on('disconnect', function() {
console.log(socket.id + ' disconnected');
//remove user from db
}
});
possibile duplicato di [Socket.IO - come ottengo un elenco di socket/client connessi?] (Http://stackoverflow.com/questions/6563885/socket-io-how-do-i-get-a -list-of-connected-sockets-clients) – alessioalex
come farlo in socket.io v 1.0 sopra –
@SojharoMangi Per v 1.0+ https://github.com/Automattic/socket.io/blob/master/examples /chat/index.js#L35-L36 O http://stackoverflow.com/a/24393900/2609085 – guptakvgaurav