与SocketIO共享ExpressJS会话并进行更新

时间:2019-02-17 18:50:17

标签: javascript node.js express socket.io

我在实际更新会话时遇到问题。我正在使用一个名为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;

我希望会话更新。如何做到这一点,以便在用户连接时正确更新会话?

0 个答案:

没有答案