nodejs socket.io在升级到websocket之前关闭连接 我试图编写一个C++客户端,与使用NoDEJS和SoCKE.IO编写的WebSoCub服务器进行对话。我无法让C++客户端建立WebStCube连接;在客户端请求将HTTP连接升级到WebSocket之后,服务器立即断开连接

nodejs socket.io在升级到websocket之前关闭连接 我试图编写一个C++客户端,与使用NoDEJS和SoCKE.IO编写的WebSoCub服务器进行对话。我无法让C++客户端建立WebStCube连接;在客户端请求将HTTP连接升级到WebSocket之后,服务器立即断开连接,c++,node.js,socket.io,C++,Node.js,Socket.io,我使用tcpdump来观察数据包来回移动。当我从浏览器使用WebSocket服务器时,它工作得很好,tcpdump输出显示来回的数据包。但是当我尝试用C++客户端连接到服务器时,WebSoT连接永远不会建立。tcpdump的输出显示正在发送到服务器的升级请求,随后服务器立即断开连接 然后,我尝试使用nc复制事件序列。我连接到服务器(在端口8080上运行)并复制粘贴了由浏览器发送的标题集,正如tcpdump捕获的那样。即使使用此重复的工作头,连接也会断开 服务器端没有任何输出指示连接断开的原因 以

我使用tcpdump来观察数据包来回移动。当我从浏览器使用WebSocket服务器时,它工作得很好,tcpdump输出显示来回的数据包。但是当我尝试用C++客户端连接到服务器时,WebSoT连接永远不会建立。tcpdump的输出显示正在发送到服务器的升级请求,随后服务器立即断开连接

然后,我尝试使用
nc
复制事件序列。我连接到服务器(在端口8080上运行)并复制粘贴了由浏览器发送的标题集,正如tcpdump捕获的那样。即使使用此重复的工作头,连接也会断开

服务器端没有任何输出指示连接断开的原因

以下是我发送的标题:

GET /socket.io/?type=player&EIO=3&transport=websocket&sid=7MdCLhT_8cTsd6F4AAAC HTTP/1.1
host: localhost:8080
connection: Upgrade
pragma: no-cache
cache-control: no-cache
upgrade: websocket
origin: http://localhost:8080
sec-websocket-version: 13
user-agent: Mozilla/5.0
accept-encoding: gzip, deflate, sdch
accept-language: en-US,en;q=0.8
cookie: io=7MdCLhT_8cTsd6F4AAAC
sec-websocket-key: nm7f0TlagGC2S6sAUPHwaQ==
sec-websocket-extensions: permessage-deflate;client_max_window_bits
x-forwarded-proto: http
x-forwarded-port: 80
x-forwarded-for: 127.0.0.1

我完全搞不懂socket.io为什么不升级连接。根据我看到的WebSocket协议的文档,这应该是可行的。我唯一能想到的就是Socket.IO需要一个cookie或其他魔法咒语来让客户端与服务器对话。

我在某处读到
Socket.IO
使用自定义
websocket
协议。这就是为什么可能,
c++
客户端无法
socket.io
服务器的原因。我想你是对的。最后,我终于从SoCKE.IO中使用了C++库,它运行良好。