2012-01-09 9 views
31

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 
    } 
}); 
+0

可能な複製[Socket.IO - 接続されたソケット/クライアントのリストを取得するにはどうすればいいですか?](http://stackoverflow.com/questions/6563885/socket-io-how-do-i-ja-aa -list-of-connected-sockets-clients) – alessioalex

+0

socket.io v 1.0より上でこれを行う方法 –

+1

@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

答えて

40

これであなたを助ける同様の質問があります。

Socket.IO - how do I get a list of connected sockets/clients?

Create a list of Connected Clients using socket.io

は、あなたが知っていることはありませんので、私のアドバイスは、接続されたクライアントのリストのことは自分を追跡維持することですSocket.IOの内部APIが変更される可能性があります。したがって、各接続時にクライアントを配列(またはデータベース)に追加し、各切断時にクライアントを削除します。

+0

私は自分自身を追跡しようとしましたが、どのユーザーが切断するかを知るにはどうすればいいですか?誰かが切断したときにすべてのクライアントにpingを実行する機能を作ろうとしましたが、それは非常に信頼できる解決策ではありませんでした。 – kimpettersen

+6

io.sockets.on( 'connection'、function(socket){socket.on( 'disconnect'、function(){console.log(socket.id + 'disconnected';});それは接続に特有の唯一のものです – alessioalex

+0

あなたが役に立ったら私の答えを受け入れることができると嬉しいです – alessioalex

関連する問題