关于express4.0 io.set修改handshake无法生效的问题
发布于 9 年前 作者 CCCMMM 3203 次浏览 最后一次编辑是 8 年前 来自 问答

下面是代码块: 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个并不是一个类,求解决方法。。。。

回到顶部