Session 为什么我的express中间件会话未定义?

Session 为什么我的express中间件会话未定义?,session,express,middleware,Session,Express,Middleware,我正在尝试将express中间件用于会话(我不理解,但我觉得我非常接近) 我最后问的原因是express docs()将其命名为express.cookieSession,而其他人(主要在这里)在讨论它时都将其命名为express.session。我现在真的不确定,我只是有一大堆可能有用的代码???但我看到的每个例子都不一样。。。它是如何工作的 var express = require('express') , http = require('http'); , app = expre

我正在尝试将express中间件用于会话(我不理解,但我觉得我非常接近)

我最后问的原因是express docs()将其命名为express.cookieSession,而其他人(主要在这里)在讨论它时都将其命名为express.session。我现在真的不确定,我只是有一大堆可能有用的代码???但我看到的每个例子都不一样。。。它是如何工作的

var express = require('express')
  , http = require('http');
  , app = express();


store  = new express.session.MemoryStore;
app.use(express.cookieParser());
//app.use(express.cookieSession());
app.use(express.session({secret:'whateverman',key:'express.sid',store:store}));
app.use(app.router);

app.all('/*',function(req,res,next){res.header("Access-Control-Allow-Origin","*");res.header("Access-Control-Allow-Headers","X-Requested-With");next();});



var server = http.createServer(app);
server.listen(8000);
var io = require('socket.io').listen(server);



io.sockets.on('connection',function(socket){

    socket.on('reglogin',function(_){_.session.e='some@email.com';});

});
socket.on('reglogin'生成:

TypeError:无法设置未定义的属性“e”

//-------------------------------问题的最新情况

如果express依赖于connect,但express可以像访问自己的连接中间件一样访问connect中间件,例如:

app.use(express.cookieSession()); //app is express
app.use(connect.cookieSession()); //does exactly the same
那么,同样的逻辑肯定也适用于依赖于express的socket.io:

io.use(connect.CookieSession()); //io is socket.io
这里我错了吗?Socket.io是否有相同的.use方法?update:(答案是no to io.use)

io.interoperate(app.use(express.cookieSession());LOL

----------------------------更新--------------------------------- 我遵循了以下npm模块的指导原则,尝试让会话正常工作,并在每次握手时归档,不使用cookie:

express.io session.socket.io session.io+sessionstore

当前将后者与控制台日志一起使用:

warn - handshake error Could not find cookie with key: connect.sid

在Express 2中,是
会话
;在Express 3中是
cookieSession
。这解释了网站(
cookieSession
)和其他任何地方(
会话
)之间的脱节;其他地方它都过时了。well express依赖于connect。在connect/lib/middleware中,我看到session.js和cookieSession.js,但我看不到曙光……我想这是因为我使用的是来自io的req,而不是应用程序,io只监听应用程序(应用程序是express),但这只是一个理论问题,我很确定这也是问题所在。我找到了一种方法使其与Express 2互操作,但我还没有找到Express 3的任何内容。有趣的是,您对Express 2做了什么?