Цель моей простой попытки - отобразить онлайн-список пользователей. Я имею в виду отображение не идентификатор socket.io, а отображение профиля пользователя. Когда авторизованный пользователь подключается к моему серверу, откройте канал socket.io, он должен получить свой профиль и отправить сообщение другому подключенному пользователю, к которому подключен новый пользователь (имя, адрес электронной почты и т. Д.). Я видел много примеров, как сделать это в рамках авторизации, но он не справляется с отключением. Что я хочу сделать, и то, что я не могу сделать в псевдокоде:Ссылка socket.io ID с экспрессом и паспортом
var io = require("socket.io").listen(server);
io.set("authorization", function(data, callback){
// ... some code...
callback(null, true);
});
io.sockets.on('connection', function (socket) {
var UserProfile = passport.getUserProfile(socket.id)
io.sockets.emit('user_connected', {UserProfile: UserProfile, socketID: socket.id});
io.sockets.on('disconnect', function (socket) {
io.sockets.emit('user_disconnected', {socketID: socket.id});
});
});
Это псевдокод!
Мой стек переполнен. Я просто хочу связать идентификатор socket.io и паспортный аккаунт вместе в пределах соединения. Как мне это сделать?
отличный ответ @luschn ... быстрый вопрос, что это за код, эффективно выполняющий клиентов [socket.id] = username Назначает ли объект объекту с использованием скобок? – Pinky
Да, вы не можете использовать точечную нотацию в этом случае (clients.socket.id будет чем-то совершенно другим). в основном он принимает идентификатор сокета как ключ в ассоциативном массиве/объекте и использует имя пользователя как значение. – luschn