私は nodejs (0.8.15) と socket.io (0.9) を使用しています。ルームと名前空間でチャットを作成しています。したがって、問題は次のとおりです。
1) ユーザーが部屋に入るたびに、この部屋のオンライン ユーザーのリストを表示する必要があります。wiki https://github.com/LearnBoost/socket.io/wiki/Roomsで、クライアントのソケット id のリストを取得できることを読みましたio.sockets.clients('room')
が、ユーザーにはニックネームがあり、次のように保存します。
var io = io.listen(server);
var chat = io.of('/chat').on('connection', function (socket) {
{
socket.on('user-entered-to-chat', function(nickname) {
// how i store nickname
socket.nickname = nickname;
...
// i need do something here or above to make array of nicknames
socket.emit('get-users-list`, array);
}
});
Q: 各人のソケットにアクセスして、ニックネームなどの情報を取得するにはどうすればよいですか?
もちろん、ニックネームを socket.id とともにデータベースに保存することはできますが、この方法は避けたいと思います。
2) また、var nicknames=[];
コードのどこかで宣言することもできますが、オンラインの 1 つの部屋に 500 人以上のユーザーがいる場合はどうすればよいでしょうか? 500以上で動作しますか?
私はすべてのユーザーにとって変数であると考えchat
、すべてのニックネームを書き込もうとしましたvar chat.nicknames=[]
が、うまくいきませんでした。にも機能しませんでしたio.sockets.nicknames = []
。すべてのユーザーには独自のchat
.
3)ソケットに関するすべての情報/データはどこに保存されますか? たとえば、ルーム内のクライアントのリスト。私のnodejsサーバー/コンピューターで?
ありがとうございました