gpt4 book ai didi

c# - WebSockets 握手后 Chrome 断开连接

转载 作者:太空狗 更新时间:2023-10-30 01:09:26 27 4
gpt4 key购买 nike

我正在尝试让一个简单的 WebSocket 示例在我的机器 (localhost) 上运行,我让 JavaScript 和 C# 运行良好并连接,除了 Chrome 在握手后断开连接。

我搜索了一上午,我认为它与同一个域策略有关,正如另一个“问题”所暗示的,我已经将我的浏览器更新到最新版本(12.xxx) .

但是我找不到解决问题的方法。

我在 C# 端使用:

ConnectionOrigin = "http://localhost:8080";
ServerLocation = "ws://localhost:8181/test";

我正在使用直接从磁盘打开的普通 HTML 文件(网址栏上的 file:///)运行 JavaScript。我也尝试过使用 XAMPP 在本地托管它,但我总是遇到同样的问题。

附件是C#程序的日志输出:

   New connection from 127.0.0.1:8181 requested. Handshaking ...
Reading handshake ...
GET /test HTTP/1.1
Upgrade: WebSocket
Connection: Upgrade
Host: localhost:8181
Origin: null
Sec-WebSocket-Key1: R 506 I 2D }6 qFB G0`@88J? 4
Sec-WebSocket-Key2: y 20 8403!24 L 5 8

Sending handshake ...
HTTP/1.1 101 Web Socket Protocol Handshake
Upgrade: WebSocket
Connection: Upgrade
WebSocket-Origin: http://localhost:8080
WebSocket-Location: ws://localhost:8181/test


New connection from 127.0.0.1:8181 established.
http://localhost:8080
Data sent to the client ["Time at the server: 23-07-2011 12:57:27"]
Client disconnected.
Waiting for another connection attempt ...

最佳答案

对于这种请求:

GET /test HTTP/1.1
Upgrade: WebSocket
Connection: Upgrade
Host: localhost:8181
Origin: null
Sec-WebSocket-Key1: R 506 I 2D }6 qFB G0`@88J? 4
Sec-WebSocket-Key2: y 20 8403!24 L 5 8

响应必须是:

HTTP/1.1 101 WebSocket Protocol Handshake
Upgrade: WebSocket
Connection: Upgrade
Sec-WebSocket-Origin: null
Sec-WebSocket-Location: ws://localhost:8181/test

the response code here

所以:

  • 第一行是WebSocket,不是Web Socket
  • 它是 Sec-WebSocket-... 而不是 WebSocket-...
  • 您没有包含作为握手重要部分的响应代码(其构造在 the specs 中描述)。
  • 此外,您应该使用 \r\n 而不是 \n(以防您还没有这样做)。

附带说明一下,您可能需要查阅 chrome://net-internals/(Events 选项卡,然后查找合适的 SOCKET_STREAM) 查看 Chrome 实际收到的响应。

关于c# - WebSockets 握手后 Chrome 断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6800190/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com