Я сделал чат-клиент с разными чатами в NodeJS, socketIO и Express. Я пытаюсь отобразить обновленный список подключенных пользователей для каждой комнаты.
Есть ли способ подключения имени пользователя к объекту, чтобы я мог видеть все имена пользователей, когда я это делаю:
var users = io.sockets.clients('room')
а затем выполните следующие действия:
users[0].username
В каких других случаях я могу это сделать?
Решено: Это своего рода дубликат, но решение не выписано очень четко в любом месте, поэтому я подумал, что записал его здесь. Это решение post от Энди Хин, на которое ответил 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
}
});