0
我正在编写一个结合登录功能和实时聊天的nodejs服务器。当我尝试让所有登录并与我的实时聊天服务器连接的用户返回客户端(以便他们可以选择特定的用户进行聊天)时,问题就出现了。处理来自多个登录的实时聊天变量
这是我登录功能的代码。我声明的变量,所以当客户端请求/ doLogin,用户名会被保存在它
var userLogged = {name: null, socketid: null};
app.post('/doLogin', function(req,res){
db.users.findOne({username: req.body.username}, function(err, user) {
if(err) {
console.log("Login fail");
}
else if (user != null) {
if (req.body.password == user.password) {
req.session.user_role = "user";
userLogged.name = req.body.username;
} else {
req.session.user_role = "null";
}
}
res.send({redirect: "/"});
});
});
而且在实时聊天功能(使用Socket.io),当用户连接(登录后),我将之前的socket.id存储到变量中,并将该变量保存在mongodb中。
io.sockets.on('connection', function(socket){
var address = socket.handshake.address;
userLogged.socketid = socket.id;
db.clientList.save({name: userLogged.name, socketid: userLogged.socketid}, function(err, saved){
});
console.log("Connection " + address.address + " accepted.");
//
//
socket.on('disconnect', function(){
db.clientList.remove({socketid: userLogged.socketid});
});
});
问题是,当其他用户登录时,变量发生变化,所以我无法将正确的信息保存到数据库中。 请帮帮我!