首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >socket.handshake无法获得会话

socket.handshake无法获得会话
EN

Stack Overflow用户
提问于 2016-01-19 03:21:40
回答 1查看 348关注 0票数 0
代码语言:javascript
复制
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),并使用此方法保存会话,但无法使用下一个方法:获得会话

代码语言:javascript
复制
io.sockets.on('connection', function(socket){
    var session = socket.handshake.session;  //undefined
}
EN

回答 1

Stack Overflow用户

发布于 2016-01-19 07:22:18

我已经解决了这个问题,但我不知道为什么。

代码语言:javascript
复制
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获得它。

代码语言:javascript
复制
io.sockets.on('connection', function(socket){
      var session = socket.handshake.headers.session;  // it works
}

就这样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34867991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档