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
嘿你很酷你做了类似的事情,生病看看希望它有帮助。 –