所以我看到了这篇很棒的博文,Experimenting with Node.js。我决定尝试使用作者的要点自行设置。它没有用。
进一步调试显示 websocket 连接正常,但在调用“发送”后立即关闭。这是wireshark跟踪(请原谅奇怪的间距):
GET /test HTTP/1.1
Host: 127.0.0.1:8000
Sec-WebSocket-Key2: 3 j 92 9 62" 7 0 8 8
Upgrade: WebSocket
Connection: Upgrade
Origin: http://127.0.0.1:3000
Sec-WebSocket-Key1: 96'5% S72.93?06
......(bHTTP/1.1 101 WebSocket Protocol Handshake
Upgrade: WebSocket
Connection: Upgrade
Sec-WebSocket-Origin: http://127.0.0.1:3000
Sec-WebSocket-Location: ws://127.0.0.1:8000/test
.4.R....mh.....{.{"action":"move","x":450,"y":22,"w":1146,"h":551}.
我在 Chrome 和 Firefox 4.0 beta 中都试过这个。它们都表现出相同的行为。如果我去原来的博客网站,它工作正常。
另一件事。如果我在 FF 或 Chrome 中进入 JS 控制台并执行以下操作:
ws = new WebSocket('ws://localhost:8000/test')
ws.send("foo")
它立即断开连接并且不发送消息。服务器显示连接和握手,但从未收到消息。
我在这里发现了一些类似的问题,但要么在没有发布修复程序的情况下得到解决,要么似乎不适用于这种情况。如果它更容易,我可以从要点中发布代码。