使用Node Js + Express跟踪在线状态

时间:2016-03-09 09:28:19

标签: node.js express

我创建了一个使用快速Node JS进行实时聊天的网页。

我希望在线用户旁边有绿线,离线用户旁边有红线。每个用户可能都有一个"最喜欢的"用户。

我的服务器Node.JS代码是:

var userList = []; //This array will maintain all users online

module.exports = function(app,io){

    // Initialize a new socket.io application, named 'chat'
    var chat = io.on('connection', function (socket) {


        socket.on('join', function (data) {
            socket.join(data.username); 
            var index = userList.indexOf(this.user);
            if (index == -1) {
                userList.push(data.username); //Add User to Array
            }

            this.user = data.username;
            io.sockets.emit('sendusers', { user:  userList } ); //Emit Userlist

        });
        // Remove user from array on disconnect. code not included here

在我的客户端,我有:

socket.on("sendusers", function (data) {
    loggedInUsers = data;  //Save logged ion users foor use in other areas
    $("#ulusers li").each(function () {
        var currentUser = $(this).find(".first-p").html();
        if ($.inArray(currentUser, data.user) > -1) {
            $(this).css("border-left", "5px solid green");
        }
        else {
            $(this).css("border-left", "5px solid red");
        }
    });
})

所以基本上逻辑是:每当有人加入或离开网页时,它会向每个人发出当前登录的用户列表。然后,如果每个客户端都在该页面上,则会遍历用户列表,并相应地设置css。

这个逻辑适用于10,100,500?用户。但如果该网站获得1000,10000或更多用户会怎样?在这种情况下,我如何维护每个用户的列表?

0 个答案:

没有答案