我正在使用Express的Passport js,并且对于在应用程序的不同组件中获取当前用户的详细信息感到困惑。
当用户连接到套接字时,我想获取用户名并将其放入数组中。在我的server.js中,我需要我的路由和socket.io文件。
require('./app/routes.js')(app, passport);
require('./app/sockets.js').listen(server, passport);
在我的socket.js文件中,当用户连接时,我有一些事件。
var users = [];
exports.listen = function(server, passport){
var socketio = require('socket.io');
io = socketio.listen(server);
io.on('connection', function(socket){
users.push({
id: socket.id
});
socket.emit('new user', socket.id);
console.log('user count: ' + io.engine.clientsCount);
console.log('users length: ' + users.length);
socket.on('send message', function(message){
if (/\S/.test(message)) {
io.sockets.emit('new message', message);
console.log('new message: ' + message);
}
});
socket.on('disconnect', function(socket){
console.log('user disconnected: ' + users.length);
users.splice(users.indexOf(socket.id), 1);
});
});
};
我可以在routes文件中获取用户名并将其传递给视图。我对如何使用没有请求的文件从会话中获取详细信息感到困惑。如:
app.get('/chat', isLoggedIn, function(req, res){
res.render('chat.ejs',{
user : req.user // get the user out of session and pass to template
});
});