WebSocket服务器握手响应
Websocket server handshake response
我正在尝试设置WebSocket通信。我可以打开Websocket,但我不知道如何正确获得握手响应。根据几个网站:
"此外,服务器可以在此处确定扩展/子协议请求;有关详细信息,请参见其他信息。sec-websocket-peccept零件很有趣。服务器必须从客户端发送的sec-websocket-key派生。得到它,将客户的sec-websocket-key和" 258EAFA5-E914-47DA-95CA-95CA-C5AB0DC85B11"一起使用(这是一个"魔术字符串"(,请返回结果的sha-1 hash,然后返回基本64编码哈希...因此,如果密钥是" dghlihnhbxbszsbub25jzq ==",则接受为" s3pplmbitxaq9kygzzhzrbk xoo ="。
https://developer.mozilla.org/en-us/docs/web/api/websockets_api/writing_websocket_servers
,但我似乎根本无法再现这些结果。我尝试了许多编码器/解码器,并试图找到上述说明的替代解释,但它们都没有用。我也没有找到任何执行此操作的代码示例。
输入:dghlihnhbxbszsbub25jzq ==
魔术字符串(永不更改(:258EAFA5-E914-47DA-95CA-C5AB0DC85B11
输出:s3pplmbitxaq9kygzzhzrbk xoo =
我获得正确答案的唯一方法是通过此站点。它似乎使SHA1编码错误,但是总的64位答案是正确的吗?无论如何,将不胜感激。
pseudocode:
sec_websocket_key = "dGhlIHNhbXBsZSBub25jZQ=="
magic_string = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"
return base64(sha1(sec_websocket_key .. magic_string))
假设您已安装了OpenSSL:
SEC_WEBSOCKET_KEY="dGhlIHNhbXBsZSBub25jZQ=="
MAGIC_STRING="258EAFA5-E914-47DA-95CA-C5AB0DC85B11"
echo -n "$SEC_WEBSOCKET_KEY$MAGIC_STRING"
| openssl sha1 -binary
| openssl base64
确保您使用的是SHA1-而不是SHA256-并且您使用的实现返回原始数据,而不是HEX DIGEST。哈希函数的输出应为160位(20个字节(长。
另外,请记住,即使Sec-WebSocket-Key
看起来像base64数据,您也无需解码。它包含在hash as-is中。
- NodeJs 服务器充斥着 UDP 广播,不发送响应
- 如何使用软化工具包从 OPC UA 服务器异步读取操作回调中的数据值响应中获取 NodeId 详细信息
- 将静态 IP 分配给我的 ESP32 服务器后不再响应
- 如何使用 C++ 中的 cpprestsdk 发布 json 数据并从本地服务器获取响应
- boost::asio http 服务器无法向 Postman 返回有效响应
- 提升野兽 服务器响应延迟 1 秒
- WebSocket服务器握手响应
- 服务器 API 不响应 Curl 函数
- FTP服务器试图登录时奇怪的响应
- 如何知道何时没有进一步的响应在使用SSL_READ()时从服务器接收
- 如何调用对带有句点的服务器的请求,并在响应无效时再次发送
- 服务器在实现 POST 请求时响应字符串不完整
- GET请求后服务器的响应不正确
- echo服务器没有响应udp
- 从服务器响应中解析 UTF8 字符串
- 服务器不使用 select(), cpp 响应新客户端
- C++ 将请求发送到 Web 服务器上的 API,然后接收 JSON 数组响应
- 提升 Daytime7 服务器示例不响应 NetCat 客户端
- 将字符串发布到 Web 服务器,获取响应
- 损坏的HTML - 浏览器不会从我的网络服务器下载整个HTTP响应,CURL可以