Websocket 连接失败

时间:2021-05-05 21:20:55

标签: node.js sockets websocket

我正在尝试使用 Node.js 中的 net 创建一个 websocket 服务器。在 chrome 控制台中,我收到一个错误,上面写着“WebSocket 连接失败!”并且 dosent 显示错误代码或任何其他详细信息。据我所知,我正确地进行了握手,但无论如何连接仍然失败,我不确定为什么。

这是我的客户端发送的 HTTP 请求(通过 WebSocket API)-

GET /chat HTTP/1.1
Host: localhost:3000
Connection: Upgrade
Pragma: no-cache
Cache-Control: no-cache
User-Agent: Mozilla/5.0 (Linux; Android 7.0; AGS-L03) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.91 Safari/537.36
Upgrade: websocket
Origin: http://localhost:3000
Sec-WebSocket-Version: 13
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9,es;q=0.8,ar;q=0.7,hy;q=0.6,mi;q=0.5
Sec-WebSocket-Key: shhs88pGIFyzpQgczYc3uw==
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits

这是我的服务器发回的响应。我已经根据文档正确执行了每一步。

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: RDoXJ7C3/oDQLkUyHc2BFYdevY8=

我知道客户端代码没有任何问题,因为 WebSocket API 为我处理了细节问题。服务器端的握手肯定缺少某些东西,但是,我仍然看不到什么。如果有人能指出我可能遗漏的任何内容,我很感激。

1 个答案:

答案 0 :(得分:1)

全部固定。根据规范,每个 HTTP 标头都必须跟有行终止符 (\r\n)。我的错误是 in 没有添加双换行符,它应该在标题之后。