Список подключенных клиентов по имени пользователя с помощью сокета io - PullRequest
34 голосов
/ 09 января 2012

Я создал чат-клиент с разными чатами в NodeJS, socketIO и Express. Я пытаюсь отобразить обновленный список подключенных пользователей для каждой комнаты.

Есть ли способ подключить имя пользователя к объекту, чтобы я мог видеть все имена пользователей, когда я это делаю:

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 может измениться, и безопаснее отслеживать пользователя самостоятельно. Это можно сделать с помощью идентификатора сокета при отключении.

io.sockets.on('connection', function (socket) { 
    socket.on('disconnect', function() { 
        console.log(socket.id + ' disconnected');
        //remove user from db
    }
});

1 Ответ

41 голосов
/ 09 января 2012

Есть похожие вопросы, которые помогут вам в этом:

Socket.IO - как получить список подключенных сокетов / клиентов?

Создать список подключенных клиентов, используя socket.io

Мой совет - следить за списком подключенных клиентов, потому что вы никогда не знаете, когда внутренний API Socket.IO может измениться. Поэтому при каждом подключении добавляйте клиента в массив (или в базу данных), а при каждом отключении - удаляйте его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...