我正在尝试使用快速中间件进行会话(我不理解,但我觉得我非常接近)。
我最后问的原因是快递文档(http://expressjs.com/api.html#middleware)称之为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可以访问连接中间件,就好像它是自己的一样,例如:
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方法吗?更新:(对io.use回答不是)
io.interoperate(app.use(express.cookieSession())); LOL
---------------------------- UPDATE ------------------ --------------- 我已经按照以下npm模块指导方针进行了一次尝试,以使会话工作并且每次都在握手时提交无cookie:
express.io session.socket.io session.io + sessionstore
目前使用后者与控制台日志:
warn - handshake error Could not find cookie with key: connect.sid