我在实际更新会话时遇到问题。我正在使用一个名为express-socket.io-session
的软件包。它有效,共享会话;我可以按需访问它。
但是,当我然后尝试使用中间件更新会话以更新用户信息时,它不会显示已更新的会话,而是先前的未更新版本。
当用户连接到套接字时,我尝试调用socket.handshake.session.reload()
,但这一点都没有改变。
app.js的相关代码
var sharedsession = require('express-socket.io-session');
app.use(session);
io.use(sharedsession(session, {
autoSave: true
}));
app.use(async function(req, res, next){
req.session.passport.database = ..updated user data here..
next();
});
socket.js
var socketio = require('socket.io');
var io = socketio();
var socket = {};
socket.io = io;
io.on('connection', function(socket){
//Reload the session
socket.handshake.session.reload(function(err){
if(err) console.log(err);
console.log('updated');
});
var session = socket.handshake.session,
user = session.passport.user;
console.log(user);
});
module.exports = socket;
我希望会话更新。如何做到这一点,以便在用户连接时正确更新会话?