1
我用nodejs和mongodb創建了一個用戶登錄。我有一個路由器。我將下面的一些代碼刪除了,但我在這個問題中關注的主要路線是/profile
和/logout
路線。Nodejs將服務器數據傳遞給套接字?
基本上我想通過req
或res
數據到路由時的套接字。由於路由在服務器上,我不確定如何發送數據。我的意思是通常你從客戶端發送到服務器,而另一種方式,而不是服務器到服務器。
所以也許我是盲人或者知識不夠,但是我的問題是我怎樣才能將這些數據傳遞給我的套接字。
module.exports.initialize = function(app, passport) {
app.get('/profile', isLoggedIn, function(req, res) {
res.render('profile', { user : req.user });
//socket.emit('user loggedIn', { user : req.user })
});
app.get('/logout', function(req, res) {
req.logout();
res.redirect('/');
});
// route middleware to make sure a user is logged in
function isLoggedIn(req, res, next) {
if (req.isAuthenticated())
return next();
res.redirect('/');
}
};
側面說明:我的套接字代碼坐在我的server.js這樣的例子。
var users = {};
io.sockets.on('connection', function (socket) {
// Listen to a new user then emit the user to all clients
socket.on('user loggedIn', function (data) {
socket.userName = data;
users[socket.userName] = socket;
io.sockets.emit('user name', Object.keys(users));
console.log(users);
});
});
基本上我想只是存儲在用戶的所有登錄的對象內,發射到客戶端的所有已登錄用戶,並讓他們有一個實時聊天。
看來我需要做的就是將數據傳遞到我的套接字,所以我確信傳遞該數據很簡單,但我不知道如何做!
謝謝!
正如順便說一句,我正在做一個類似的設置,但是當用戶登錄,我們保存該會話(包含用戶詳細信息),並且套接字連接到同一會話存儲。所以在'connect'套接字中,我們也可以訪問當前用戶的會話。從這個建議[Stack answer](http://stackoverflow.com/a/11585839/1253609)。 – incutonez
嘿你很酷你做了類似的事情,生病看看希望它有幫助。 –