我是新来的node.js,我被困在这里。我在我的路由器下面的代码:当用户加载/首次,它会初始化一个空会话对象为他自己的页面Node.js为什么我的会话对象在向它添加值之后为空
router.get('/', function(req, res, next) {
// Initialize the game
if(!req.session.gameStarted) {
req.session.gameStarted = true;
req.session.serverStocks = [];
setInterval(function() {
req.session.serverStocks.push('new object');
console.log('This works as it should, returns an array full of objects ->');
console.log(req.session.serverStocks);
}, 4000);
}
else {
console.log('After refresh, this is always empty ->');
console.log(req.session.serverStocks);
console.log('Although this returns "true" as it should which means sessions work OK ->');
console.log(req.session.gameStarted);
}
res.render('pages/homepage', { title: 'Hello' });
});
我的目标是。然后每4000秒将“新对象”字符串添加到它。第一次访问部分运行良好,但是当我刷新页面时,会话对象始终为空。我错过了什么?什么是正确的方法来做到这一点?
///这是从零件app.js这是关系到会话
var session = require('express-session')({
secret: 'shhh_very_secret',
resave: true,
saveUninitialized: true,
cookie: { secure: false }
});
var sharedsession = require("express-socket.io-session");
// Express
var app = express();
// Config (game and app settings)
var config = require('./config/config.js');
app.config = config;
// Session
app.use(session);
// Socket.io
app.io = socket_io();
app.io.use(sharedsession(session, {
autoSave:true
}));
我用socket.io但之后,我从客户端删除它,所以它应该不会影响到代码(要么?)。
//编辑:我想setInterval函数中的代码正在与一些自己的范围,因为它不是真正添加任何我的对象,如果我检查它的功能之外
https://www.airpair.com/express/posts/expressjs-and-passportjs-sessions-deep-dive请参阅会话概览的网址。 – AfDev