node . js,套接字.Io:检查用户是否在线或离线

NODE.js & socket.io: how to check whether user is online/offline?

本文关键字:是否 用户 线或 离线 检查 js 套接字 Io node      更新时间:2023-09-26

我正在制作一个聊天应用程序,我想添加一个选项来检查用户是在线还是离线。

假设我有一个名称数组(它是将来数据库的当前替代品),表示为' chat中曾经存在的所有用户'。

var users = {user1,user2,user3,...usern};

同时,假设我有html表单用于输入用户名

<p>Enter your username</p>
<p id="nickError"></p>
<form id="setNick">
    <input size="35" id="nickname" maxlength="25"></input>
    <button>Chat!</button>
</form>

我有逻辑和代码来检查输入区域的名称是否在用户数组中。此外,我有一个基本的聊天,你可以在其中进行全局或私下交谈。

我的server.js部分:

io.on('connection', function(socket){
    socket.on('new user',function(data,callback){
        if (data in users)
        {
        callback(false);
        } else{
            callback(true);
            socket.nickname = data;
            users[socket.nickname] = socket; 
            updateNicknames();
            io.emit('user joined', data);
        }
    });
};

我想做一个函数,命名为updateNicknames(),它将更新用户的状态,所以如果一个人的昵称是在我的用户'数据库'连接,他的状态应该是在线的,反之亦然。

disconnect事件上从数组中删除用户