2016-06-28 5 views
0

私はExpressでPassport jsを使用していますが、アプリケーションのさまざまなコンポーネント内で現在のユーザーの詳細を取得することについて混乱しています。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'はプログラミングレベルでは' socket.io'関連ではありません...私はタグを削除しました。詳細については、[tag:sockets]タグの詳細を参照してください。 – Myst

答えて

関連する問題