【发布时间】:2011-07-23 11:59:25
【问题描述】:
我正在尝试让一个简单的 WebSocket 示例在我的机器 (localhost) 上运行,我让 JavaScript 和 C# 运行良好并连接,除了 Chrome 在握手后断开连接。
我已经搜索了一上午,我认为这与相同的域策略有关,正如另一个“问题”所暗示的那样,我已将浏览器更新到最新版本 (12.xxx)。
但是我找不到解决问题的方法。
我在 C# 端使用:
ConnectionOrigin = "http://localhost:8080";
ServerLocation = "ws://localhost:8181/test";
我正在使用直接从磁盘打开的普通 HTML 文件运行 JavaScript(网址栏上的file:///)。我也尝试过使用 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 ...
【问题讨论】:
-
您使用的是什么 WebSocket 服务器?您从 Chrome(在 Chrome javascript 控制台中)得到什么错误?此外,您显示的握手值适用于协议的 Hixie-76 版本,但它们不完整,如图所示。客户端应在握手结束时发送 8 个随机字节。服务器应该发回 16 个字节,这些字节基于 key1、key2 和来自客户端的 8 个随机字节。
标签: c# google-chrome websocket