2016-06-28 133 views
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 
     }); 

    }); 
+0

你問的是如何讓用戶從不是由路由執行的代碼? – leetibbett

+0

我在問我如何從socket.js文件和其他文件中的會話中獲取當前用戶。 – Tom

+0

套接字,在編程層面上,不是'socket.io'相關...我刪除了標籤。有關更多信息,請參閱[tag:套接字]標記詳細信息。 – Myst

回答

相關問題