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
});
});
ルートで実行されなかったコードからユーザーを取得する方法を尋ねていますか? – leetibbett
私は現在のユーザーをsocket.jsファイルやその他のファイルのセッションからどのように取得できるかを尋ねています。 – Tom
'socket'はプログラミングレベルでは' socket.io'関連ではありません...私はタグを削除しました。詳細については、[tag:sockets]タグの詳細を参照してください。 – Myst