在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都将在响应中返回