我的问题是我的socket.io会话丢失了,为什么IDK丢失了。这是示例:
在这里,我创建一个套接字会话:
socket.on('login', (userdata) => {
socket.handshake.session.userdata = userdata;
socket.handshake.session.save();
});
一段时间后,我回到网站后,该会话不再可用,因此无法在其他套接字调用中使用它,例如:
socket.on('lobby-left', (data) => {
UserLobby.findOne({
username: socket.handshake.session.userdata.username // Doesnt find user anymore
}).then((inLobby) => {
这里的问题是,即使我再次登录,我仍然无法在socket.io中使用此会话,而且我不明白为什么它在x100登录后或通过智能手机登录该站点后才能开始工作。
像昨天一样,一切正常,今天我运行服务器,看到已经登录,但套接字中的该会话不再存在。我重新登录仍然不存在。
这是会话代码:
app.use(cookieParser());
const exsession = require('express-session');
const MongoStore = require('connect-mongo')(exsession);
const session = exsession({
secret: 'ianevutytsuinliv',
cookie: {
maxAge: 24 * 60 * 60 * 1000
},
resave: true,
saveUninitialized: true,
store: new MongoStore({
mongooseConnection: mongoose.connection
})
});
app.use(session);
io.use(sharedsession(session));
我使用以下软件包:https://www.npmjs.com/package/express-socket.io-session