获取用户名为

时间:2017-12-13 12:05:58

标签: socket.io

我正在进行一次简单的聊天,所以当有人登录时,我有这个:

socket.broadcast.emit('logon', {
            socketID: socket.id,
            username: username
        });

因此,如果我通过chrome登录为“Bob”,然后我通过Edge登录为“Ted”,当“Ted”登录时我将看到“Ted”,我正在查看与Chrome的聊天。

但是,如何在登录后立即获取具有用户名的当前客户端列表?

因此,如果“Ted”已经存在,并且我从其他浏览器以“Bob”身份登录,我想在列表中看到“Ted”。

是否可以不使用数据库来存储登录的每个用户,因为这是我能想到但不想使用数据库的唯一方法?

1 个答案:

答案 0 :(得分:0)

无需使用数据库。您必须拥有的唯一用户是连接到某些事件侦听器服务器端的用户数组。例如:

var users = []; // Array of users online
io.on('connection', function(socket) {
    var user = { // On connection, create an object for the user.
        socket: socket,
        username: null
    }

    socket.on("login",function(data) { // When the user logs in, set his username and add him to the users array.
        user.username = data.username;
        users.push(user);
    });

    socket.on("disconnect",function() { // When user disconnects, remove the object from the array.
    var index = users.indexOf(user);
    if (index !== -1) users.splice(index);
    });
});

如您所见,现在有一组您可以访问的所有在线用户。