GET / HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Host: localhost:53000
Origin: null
Sec-WebSocket-Protocol: hmiModel
Sec-WebSocket-Key: Hbw2xjBq6OTGXzxeuqrdVQ==
Sec-WebSocket-Version: 13
Sec-WebSocket-Extensions: x-webkit-deflate-frame
这是我在 chrome 浏览器上从客户端获得的请求密钥。之后,我将密钥与 Magic String 连接起来。
魔弦为258EAFA5-E914-47DA-95CA-C5AB0DC85B11
然后我使用了 SHA1 算法,我得到了以下哈希值
a5877edcaa04801d07c5687aad3a6cf03d26ad5c
然后我使用base64对上述值进行编码,得到加密值
Nzg1YWNkZTc0MGFhZDEwODVjNzA=
然后我向客户端发送响应握手
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Charset: ISO8859-1,UTF-8
Connection: keep-alive, Upgrade
WebSocket-Origin: localhost
WebSocket-Location: localhost
WebSocket-Protocol: hmiModel
Sec-webSocket-Version: 13
Sec-WebSocket-Accept: Nzg1YWNkZTc0MGFhZDEwODVjNzA=
但在控制台中,我收到错误消息“ WebSocket 握手期间出错:Sec-WebSocket-Accept mismatch ”
因此 onopen 和 onmessage 事件不会因为这个错误而触发。
谁能告诉我我在哪里做错了?