关于express4.0 io.set修改handshake无法生效的问题
下面是代码块: io.set(‘authorization’, function(handshake, callback){ if(handshake.headers.cookie){ console.log(handshake.headers.cookie); handshake.cookie = cookie.parse(handshake.headers.cookie); var connect_sid = handshake.cookie[‘connect.sid’].split(’.’)[0].split(’:’)[1]; }else{ callback(‘cookie is not defined’,false); }
if (connect_sid) {
store.get(connect_sid, function(error, session){
if (error) {
callback(error.message, false);
}else{
try{
if(typeof session.user!= 'undefined'){ //这里一定要先判断session.username,否则socket中的session一直为空
handshake.session=session; //
cache=session;
callback(null,true);
}else{
callback('access die',false);
}
}catch(e){
callback(e.message,false);
}
}
});
}
else {
callback('nosession');
}
});
然后下面使用的时候 console.log(cache);//测试当时是否已经得出了session console.log(socket.handshake.session); 目前出现的问题就是第一个打印是取得的session消息,第二个是undifined,实在搞不懂 明明已经赋值过了,下面还是未定义
1 回复
我打印了一下2个handshake io.set里面的东西很多 后面调用的的东西很少 感觉这2个并不是一个类,求解决方法。。。。