我创建了一个使用快速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或更多用户会怎样?在这种情况下,我如何维护每个用户的列表?