【发布时间】:2011-11-03 05:38:27
【问题描述】:
我一直在尝试设置一个 Unity3D 组件,该组件与 Javascript 客户端协商 WebSocket 连接。
我有一个线程化的 TCPListener (c#),它处理 HTTP 请求并尝试协商握手,尽管它似乎默默地失败了。客户端在我发送响应后不久关闭连接。
我一直按照这个网站上的说明进行操作:http://deusty.blogspot.com/2010/09/websocket-draft-76-algorithm-example.html
这是套接字日志
ws://localhost:3000/serverStart
Start Time: Wed Aug 24 2011 23:32:54 GMT+0100 (GMT Daylight Time)
t=1314225174926 [st= 0] +REQUEST_ALIVE [dt=1038]
t=1314225174926 [st= 0] +SOCKET_STREAM_CONNECT [dt= 999]
--> url = "ws://localhost:3000/serverStart"
t=1314225174927 [st= 1] +PROXY_SERVICE [dt= 0]
t=1314225174927 [st= 1] PROXY_SERVICE_RESOLVED_PROXY_LIST
--> pac_string = "DIRECT"
t=1314225174927 [st= 1] -PROXY_SERVICE
t=1314225174927 [st= 1] +PROXY_SERVICE [dt= 0]
t=1314225174927 [st= 1] PROXY_SERVICE_RESOLVED_PROXY_LIST
--> pac_string = "DIRECT"
t=1314225174927 [st= 1] -PROXY_SERVICE
t=1314225174927 [st= 1] HOST_RESOLVER_IMPL [dt= 2]
--> source_dependency = {"id":455371,"type":7}
t=1314225175925 [st= 999] -SOCKET_STREAM_CONNECT
t=1314225175926 [st=1000] WEB_SOCKET_SEND_REQUEST_HEADERS
--> GET /serverStart HTTP/1.1
Upgrade: WebSocket
Connection: Upgrade
Host: localhost:3000
Origin: null
Sec-WebSocket-Key1: 52 18 5w7 9 9 2c
Sec-WebSocket-Key2: a2PA tG8 1>7242<6(yj7I2
\x78\x15\xbc\x75\x2d\x54\x3b\xea
t=1314225175926 [st=1000] SOCKET_STREAM_SENT
t=1314225175963 [st=1037] SOCKET_STREAM_RECEIVED
t=1314225175963 [st=1037] WEB_SOCKET_READ_RESPONSE_HEADERS
--> HTTP/1.1 101 WebSocket Protocol Handshake
Upgrade: WebSocket
Connection: Upgrade
Sec-WebSocket-Origin: null
Sec-WebSocket-Location: ws://localhost:3000/serverStart
Sec-WebSocket-Protocol: webpad
\x20\xc3\xc3\xf6\xad\xd2\x76\x63\x48\x86\x0c\xd2\xa6\xb1\x06\x72
t=1314225175963 [st=1037] SOCKET_STREAM_RECEIVED
t=1314225175963 [st=1037] SOCKET_STREAM_RECEIVED
t=1314225175964 [st=1038] -REQUEST_ALIVE
我正在使用以下算法生成响应
response = MD5( bitpack(
Key1(numbers only / num of spaces),
Key2(numbers only / num of spaces),
RequestBody))
您能提供任何帮助将不胜感激?
【问题讨论】:
-
websocket 协议仍在发展中,我怀疑该示例是针对“旧(er)”草案...也存在对浏览器版本的依赖性(因为不同的浏览器版本实现不同的草案版本)
-
我很确定我有正确的规范版本,我正在处理 00 版本。使用 Chrome 13(14 将使用新规范一旦发布)
-
如果您正在处理 00 那么这是错误的 / Chrome 13 实现 03 aka v76 - 请参阅 stackoverflow.com/questions/4878830/…
-
对不起,我提到的文章似乎是 v76。似乎仍然找不到错误。我已经将它与有效响应进行了比较,我唯一能想到的是如果我的挑战响应无效但我遵循规范响应 = MD5(bitpack(Key1(仅数字/空格数), Key2(数字仅/空格数),RequestBody))
标签: c# javascript google-chrome websocket tcplistener