无法使用 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=