Я создал чат-клиент с разными чатами в 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
}
});