【发布时间】:2014-09-13 06:16:40
【问题描述】:
我已经阅读并复制了很多关于在 socket.io、express 和会话存储中使用会话的示例。但是,每次我打电话给sessionStore.get()(或sessionStore.load())时,我得到的都是undefined。为什么?
这是我的代码(简化):
var app = require('express')(),
session = require('session'),
MongoStore = require('connect-mongostore')(session);
app.use(session({
store: new MongoStore({ 'db': 'sessions' });
}));
io.use(function(socket, next) {
var req = socket.request,
reqCookie = cookie.parse(req.headers.cookie),
sessid = reqCookie['connect.sid']; // == actual session ID
sessionStore.get(sessid, function(err, session) {
err // == undefined
session // == undefined
});
next() ;
});
我也尝试使用session.MemoryStore 代替connect-mongostore,结果相同。我修改了
node_modules/express-session/session/memory.js 尝试注销 sessionStore 中的会话:
MemoryStore.prototype.get = function(sid, fn){
var self = this;
console.log(self.sessions); // Output: {}
在会议等方面我是新手,所以感谢您对我的包容。
更新:我已经在两个不同的系统和网络上尝试了代码,但仍然得到相同的结果。
【问题讨论】:
标签: node.js session express socket.io socket.io-1.0