Совместное использование сеанса ExpressJS с SocketIO и его обновление - PullRequest
0 голосов
/ 17 февраля 2019

У меня проблемы с обновлением сессии.Я использую пакет с именем 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;

Я ожидаю обновленного сеанса.Как сделать так, чтобы сеанс обновлялся правильно, когда пользователь подключается?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...