通过使用给定的示例我有相应的问题.在该示例中,通过首先重新加载会话在WebSocket中使用:
socket.on('set value', function (val) {
sess.reload(function () {
sess.value = val;
sess.touch().save();
});
});
Run Code Online (Sandbox Code Playgroud)
试图在我自己的应用程序中使用它,我得到以下异常:
sess.reload(function () {
^
TypeError: Object #<Object> has no method 'reload'
Run Code Online (Sandbox Code Playgroud)
我认为问题是,没有人将变量sess定义为session:
io.listen(app).set('authorization', function (data, accept) {
if (!data.headers.cookie)
return accept('No cookie transmitted.', false);
data.cookie = parseCookie(data.headers.cookie);
data.sessionID = data.cookie['express.sid'];
store.load(data.sessionID, function (err, session) {
if (err || !session) return accept('Error', false);
data.session = session;
return accept(null, true);
});
})
Run Code Online (Sandbox Code Playgroud)
也许有些人对此有一个简短的解决方案?
问题解决了:我尝试使用这个例子:https://github.com/DanielBaulig/sioe-demo/blob/master/app.js与Express 3.0和Redis.
因此我创建了一个Redis商店(connect-redis)而不是MemoryStore:
app.use(express.session({cookie: {expires: new Date(Date.now() + …Run Code Online (Sandbox Code Playgroud)