NodeJS、socketIO、Expressのチャットルームを持つチャットクライアントを作りました。 接続されたユーザーの上に各部屋の更新リストを表示しようとしています。接続しているクライアントのリストusername with socket io
私が行うとき、私はすべてのユーザー名を見ることができるように、オブジェクトへのユーザー名を接続する方法があります:
var users = io.sockets.clients('room')
をしてから、このような何か:
users[0].username
他のものの中には、方法は私がこれを行うことができますか?
は解決: をこれが重複しての一種ですが、解決策は非常に明確に書かれていませんどこでもので、私はここにそれを書き留め思ったのです。これは、postの回答で、Andy Hinによって解決されました。これは、makによって回答されました。そしてこのポストのコメントも。
ちょっとしたことを少しだけ明確にする。あなたはソケットオブジェクトには何も保存したい場合は、これを行うことができます:
socket.set('nickname', 'Guest');
ソケットをもgetメソッドを持っているので、あなたがしたい場合はすべてのユーザーが実行します。
for (var socketId in io.sockets.sockets) {
io.sockets.sockets[socketId].get('nickname', function(err, nickname) {
console.log(nickname);
});
}
alessioalexが指摘したようにAPIが変更される可能性があり、ユーザー自身を追跡する方が安全です。これを行うには、切断時にソケットIDを使用します。
io.sockets.on('connection', function (socket) {
socket.on('disconnect', function() {
console.log(socket.id + ' disconnected');
//remove user from db
}
});
可能な複製[Socket.IO - 接続されたソケット/クライアントのリストを取得するにはどうすればいいですか?](http://stackoverflow.com/questions/6563885/socket-io-how-do-i-ja-aa -list-of-connected-sockets-clients) – alessioalex
socket.io v 1.0より上でこれを行う方法 –
@SojharoMangi v 1.0以降の場合https://github.com/Automattic/socket.io/blob/master/examples /chat/index.js#L35-L36 それとも http://stackoverflow.com/a/24393900/2609085 – guptakvgaurav