2016-03-03 44 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

回答

相關問題