io.use(function(socket, next){
signedCookieParser(socket.request, null, function(err){
if(err){
console.log('err parse');
return next(new Error("cookie err"));
}
var connect_sid = socket.request.signedCookies['connect.sid']
console.log('connect_sid'+connect_sid);
if (connect_sid) {
//通过cookie中保存的session的id获取到服务器端对应的session
sessionStore.load(connect_sid, function(error, session){
if (error) {
return next(new Error('Authentication error'));
}
else {
// save the session data and accept the connection
socket.request.session = session;
next();
}
});
}
})
})我使用最新版本(1.4.4),并使用此方法保存会话,但无法使用下一个方法:获得会话
io.sockets.on('connection', function(socket){
var session = socket.handshake.session; //undefined
}发布于 2016-01-19 07:22:18
我已经解决了这个问题,但我不知道为什么。
io.use(function(socket, next){
signedCookieParser(socket.request, null, function(err){
if(err){
console.log('err parse');
return next(new Error("cookie err"));
}
var connect_sid = socket.request.signedCookies['connect.sid']
console.log('connect_sid'+connect_sid);
if (connect_sid) {
//通过cookie中保存的session的id获取到服务器端对应的session
sessionStore.load(connect_sid, function(error, session){
if (error) {
return next(new Error('Authentication error'));
}
else {
// save the session data and accept the connection
//socket.request.session = session;
socket.request.headers.session = session;
next();
}
});
}
})})
我们将会话信息设置为socket.request.headers,并从socket.handshake.headers获得它。
io.sockets.on('connection', function(socket){
var session = socket.handshake.headers.session; // it works
}就这样。
https://stackoverflow.com/questions/34867991
复制相似问题