在Socket.IO上添加一个cookie值
如何在Socket.IO上添加一个cookie值?
io.sockets.on('connection', function (client) { console.log(client.id); client.handshake.headers.cookie.socketID = client.id; // not work // client.handshake.headers.cookie("socketID",client.id); //crash console.log(client.handshake.headers.cookie); // The current output is: //connect.sid=tI21xumy3u2n4QXO1GljmPAf.pzFQ1Xu%2B6bz36secu4VSCdSNU8PT1L44gQZ4kFUFQqQ //this is express session id, and I also want to add client.id of Socket.IO. //........... }
我已经阅读http://www.danielbaulig.de/socket-ioexpress/ ,但我不需要node.js上的会话pipe理,但只需要在cookie中添加一个socket.io客户端ID值connect.sid。
看看授权与Socket.io。 这是它处理初始连接请求的地方,可以设置响应头的位置。
我不确定cookie(name,value)
速记是否正常工作,尽pipe您可以尝试手动设置:
var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); // set day value to expiry var expires = "; expires="+date.toGMTString(); handshake.headers.cookie = name+"="+value+expires+"; path=/";
可能看起来很乱,我尝试了各种方式来设置一个cookie响应握手get请求没有成功。 不过,我设法通过调整socket.io原型代码来实现它自己的工作。
在socket.io 1.3.4版本中,
在\ node_modules \ socket.io \ node_modules \ engine.io \ lib \ server.js中
从以下行改变249行:
headers['Set-Cookie'] = self.cookie + '=' + id;
至
headers['Set-Cookie'] = req.headers.cookie;
请求中的所有cookie都将在响应中返回