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});
});
});
問題是,當其他用戶登錄時,變量發生變化,所以我無法將正確的信息保存到數據庫中。 請幫幫我!