无法使用 Websockets 连接客户端-服务器
Cant connect Client-Server with Websockets
我使用 Tcp-Listner Tcp-Client 连接在 C# .Net Framework 上创建简单的 Web 服务器。
现在我正在尝试为 chat\or 其他东西支持 Websocket 连接。
对于套接字,我使用 GenericHandler 和 js 来连接它们。收到客户请求后
GET /socket/SocketHandler.ashx HTTP/1.1
Host: ***************
Connection: Upgrade
Pragma: no-cache
Cache-Control: no-cache
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36
Upgrade: websocket
Origin: http://************
Sec-WebSocket-Version: 13
Accept-Encoding: gzip, deflate
Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7
Sec-WebSocket-Key: aroK0T3g3A6oSxC6Qz1QDg==
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
我正在使用带有 GUID 的连接密钥 aroK0T3g3A6oSxC6Qz1QDg== 从服务器向客户端发送响应,对其进行哈希 SHA1 并转换为 Base64 格式以获得接受密钥 zGccDw/PeOtlWAmdPT6HBtyywYc=
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: zGccDw/PeOtlWAmdPT6HBtyywYc=
Sec-WebSocket-Protocol: chat
但在此之后,客户端(浏览器)说
failed: Error during WebSocket handshake: Incorrect
'Sec-WebSocket-Accept' header value
那么,我做错了什么以及如何解决?
更新:例如,我使用此代码进行转换
string ClientKey = socketKey;
string GUID = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
var conc = ClientKey + GUID;
var buffer = Encoding.UTF8.GetBytes(conc);
var hash1 = SHA1.Create().ComputeHash(buffer);
var AcceptKey = System.Convert.ToBase64String(hash1);
我也有自己的 C# WebSocket 客户端。它已经过测试并与 ASP.NET Core 一起工作。
然后,我测试了你的安全密钥,结果不同。我低于哈希。
QCd+628gwEVYxyYQ8ekJny8ZHCo=
我使用 Tcp-Listner Tcp-Client 连接在 C# .Net Framework 上创建简单的 Web 服务器。
现在我正在尝试为 chat\or 其他东西支持 Websocket 连接。
对于套接字,我使用 GenericHandler 和 js 来连接它们。收到客户请求后
GET /socket/SocketHandler.ashx HTTP/1.1
Host: ***************
Connection: Upgrade
Pragma: no-cache
Cache-Control: no-cache
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36
Upgrade: websocket
Origin: http://************
Sec-WebSocket-Version: 13
Accept-Encoding: gzip, deflate
Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7
Sec-WebSocket-Key: aroK0T3g3A6oSxC6Qz1QDg==
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
我正在使用带有 GUID 的连接密钥 aroK0T3g3A6oSxC6Qz1QDg== 从服务器向客户端发送响应,对其进行哈希 SHA1 并转换为 Base64 格式以获得接受密钥 zGccDw/PeOtlWAmdPT6HBtyywYc=
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: zGccDw/PeOtlWAmdPT6HBtyywYc=
Sec-WebSocket-Protocol: chat
但在此之后,客户端(浏览器)说
failed: Error during WebSocket handshake: Incorrect 'Sec-WebSocket-Accept' header value
那么,我做错了什么以及如何解决?
更新:例如,我使用此代码进行转换
string ClientKey = socketKey;
string GUID = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
var conc = ClientKey + GUID;
var buffer = Encoding.UTF8.GetBytes(conc);
var hash1 = SHA1.Create().ComputeHash(buffer);
var AcceptKey = System.Convert.ToBase64String(hash1);
我也有自己的 C# WebSocket 客户端。它已经过测试并与 ASP.NET Core 一起工作。
然后,我测试了你的安全密钥,结果不同。我低于哈希。
QCd+628gwEVYxyYQ8ekJny8ZHCo=