如何通过WebSockets连接到socket.io时发送cookie?

有一种方法可以轻松地通过一个身份validationCookie cookie握手一个WebSocket连接到socket.io? 我现在必须单独做,如下所示:

socket = new io.Socket(document.location.hostname); socket.addEvent("connect", function() { // Send PHP session ID, which will be used to authenticate var sessid = readCookie("PHPSESSID"); this.send("{'action':'authenticate','sessionid':'"+sessid+"'}"); }); 

由于WebSocket基于HTTP,因此它们支持cookies,但是通过Socket.IO的源代码快速浏览发现,并不支持这种内置的function。

因此,在这种情况下直接使用cookie并不是一个可行的解决scheme,而且由于您使用的是Socket.IO,因此不能保证用户实际上将通过WebSocket进行连接。

在连接使用闪存套接字的情况下,要使Flash发送浏览器的Cookie而不是自己的套装是非常困难的,所以即使您直接发送cookie,也不会在浏览器中设置以防万一烧瓶sockets连接。

目前对于Socket.IO内置的这种支持并不支持,所以flash套接字将会失败。

你可以阅读关于这个问题 ,这里是一个关于闪存cookie问题的问题 。

最好的解决scheme仍然是使其成为您自己的协议的一部分。