2016-03-03 125 views
0

我是新来的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函数中的代码正在与一些自己的范围,因为它不是真正添加任何我的对象,如果我检查它的功能之外

+0

https://www.airpair.com/express/posts/expressjs-and-passportjs-sessions-deep-dive请参阅会话概览的网址。 – AfDev

回答

相关问题