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