我用 c++ 编写了一个 websocket 服务器,它可以与 websocket 协议 00(握手标头中带有 key1、key2 的那个)正常工作。
现在有了新的更新,我正在尝试对握手工作的新方式做同样的事情。这是我的服务器对握手请求的响应:
"HTTP/1.1 101 切换协议\r\n升级:websocket\r\n连接:升级\r\nSec-WebSocket-Accept: " + serverKey + "\r\n\r\n";
其中 serverkey 计算正确。举个例子:
握手请求:
GET /test HTTP/1.1
升级:websocket
连接:升级
主机:192.168.123.102
Sec-WebSocket-Origin:http: //192.168.123.5
Sec-WebSocket-Key:YB0mPvJ5t8ggCeGUWY39uQ==
Sec-WebSocket-Version: 8
握手响应标头:
HTTP/1.1 101 切换协议
升级:websocket
连接:升级
Sec-WebSocket-Accept:xt9iyCNryQTseELUkHPWjzxA2ts=
我还用https://datatracker.ietf.org/doc/html/draft-ietf-hybi-thewebsocketprotocol-08的示例检查了我的算法,它产生了完全相同的响应。
但是我仍然收到以下错误:
“WebSocket 握手期间出错:Sec-WebSocket-Accept mismatch”
我使用 chrome 15 作为我的浏览器。
你知道出了什么问题吗?
(也在 chrome 检查器网络中,它不显示响应,这是它不接受握手的情况(即使是旧版本))