求教!!我这个socket.io怎么获取不到cookie呢~ ~
发布于 11 年前 作者 TianNiu 10378 次浏览 最后一次编辑是 8 年前
    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

回到顶部