我有一个node.js应用程序具有基本身份验证,我已经添加了socket.io用于实时消息传递。我使用三种不同的凭据登录三个浏览器。示例
每个用户登录后,我将它们添加到当前登录用户列表中,删除当前用户。
逻辑正常,我从服务器端登录控制台。
但问题是网站上显示的在线用户被最后登录的用户覆盖了所有浏览器。
如果 123@123.com 最后登录。所有浏览器的在线用户列表都会被覆盖 xyz@xyz.com,abc @ abc.com 反之亦然。
结果:
- 第三位用户(123@123.com) xyz@xyz.com& abc@abc.com 在线显示。
- 第二位用户(abc@abc.com) xyz@xyz.com& abc@abc.com 在线显示。
- 第一位用户(xyz@xyz.com) xyz@xyz.com& abc@abc.com 在线显示。
醇>
客户端更新在线用户的代码。
$(document).ready(function(){
var socket = io.connect('http://localhost:3000');
// get the current user email
var email = $("#email").text();
socket.emit('user', email);
// list of online users returned from server
socket.on('users_connected',function (users) {
updateUsers(users);
});
function updateUsers(users){
var list = [];
for(var i =0; i<users.length; i++){
var user = "<a href='#'>"+users[i]+"</a>";
list.push(user);
$( "#users" ).html(list);
}
}
});
需要的答案: