求教!!我这个socket.io怎么获取不到cookie呢~ ~
发布于 9个月前 作者 TianNiu 838 次浏览
    var io = socketio.listen(server);
    /*...*/
    /*set io*/
    io.set('log level', 1);
    io.set('authorization', function(handshakeData, callback) {
    console.log("handshakeData是:");
    console.log(handshakeData);
    if (!handshakeData.headers.cookie) {
        console.log("socket.io没有发现cookie");//here,会提示没有发现cookie。。。
        //return callback('socket.io: no found cookie.', false);
    }else{
    var signedCookies = require('express/node_modules/cookie').parse(handshakeData.headers.cookie);
    handshakeData.cookies = require('express/node_modules/connect/lib/utils').parseSignedCookies(signedCookies,"ICU");
    console.log("获取到的用户cookie是:");
    console.log(handshakeData.cookies);
    /*...*/
    }
});
1 回复

提供你的socket.io版本的话别人也会更有针对性的回答你的问题的啊~ pre2 版本里, 可以这样获取

var io = require('socket.io')();
  io.use(function(socket, next){
    if (socket.request.headers.cookie) return next();
    next(new Error('Authentication error'));
  });

也就是说0.9.* 版本里的 socket.handshake 现在已经废弃掉, 换成了 socket.request 来做握手data的引用~ 参考:https://github.com/LearnBoost/socket.io/issues/1510

回到顶部