0
我正在使用Passport js和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);
});
});
};
我可以在路由文件中獲取用戶名並將其傳遞到視圖上。我對如何從沒有請求的文件獲取會話詳細信息感到困惑。如:
app.get('/chat', isLoggedIn, function(req, res){
res.render('chat.ejs',{
user : req.user // get the user out of session and pass to template
});
});
你問的是如何讓用戶從不是由路由執行的代碼? – leetibbett
我在問我如何從socket.js文件和其他文件中的會話中獲取當前用戶。 – Tom
套接字,在編程層面上,不是'socket.io'相關...我刪除了標籤。有關更多信息,請參閱[tag:套接字]標記詳細信息。 – Myst