WebSocket在发送时关闭

时间:2010-07-29 12:19:06

标签: javascript html5 node.js websocket

所以我看到了这篇精彩的博客文章Experimenting with Node.js。我决定尝试使用作者gist自己设置它。它不起作用。

进一步调试显示websocket连接正常,但是一旦调用'send'就关闭。这是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测试版中都尝试过这种方法。它们都表现出相同的行为。如果我转到original blog site,它就可以正常工作。

另一件事。如果我在FF或Chrome中进入JS控制台,我会执行以下操作:

ws = new WebSocket('ws://localhost:8000/test')
ws.send("foo")

它立即断开连接并且不发送消息。服务器显示连接和握手,但从不接收消息。

我在这里发现了几个相似的问题,但要么在没有发布修复的情况下解决,要么在这种情况下似乎不适用。如果它更容易,我可以发布gist中的代码。

4 个答案:

答案 0 :(得分:2)

CloseEvent有一个"代码"该属性将为您提供有关您的连接关闭原因的信息。

  

"返回包含服务器发送的关闭代码的unsigned short。以下值是允许的状态代码。"

支持各种代码值。这是最突出的:

  • 1000:CLOSE_NORMAL
  • 1001:CLOSE_GOING_AWAY
  • 1002:CLOSE_PROTOCOL_ERROR
  • 1003:CLOSE_UNSUPPORTED
  • 1005:CLOSE_NO_STATUS

See CloseEvent API docs on MDN了解更多信息。

答案 1 :(得分:1)

主要头颅。尽管我相信我安装了最新版本的Node.js但我没有。我有几台带有Node.js的机器我必须丢失轨道。我有Node.js v0.1.96。升级到v0.1.102后,一切正常。

对不起伙计们! :-D

答案 2 :(得分:0)

对于从浏览器发出发送时发生断开连接的问题,您需要等待onopen事件在发出发送之前触发:

var conn = new WebSocket('ws://localhost:8000/test');
conn.onopen = function (e) {
    conn.send('foo');
}
conn.onmessage = function (e) {
    console.log('got: ' + e.data);
}

答案 3 :(得分:0)

在Android中,对我来说,问题在于我如何处理数据。通过执行以下操作,我可以查明原因。

  1. 检查NodeJ(服务器)中是否有问题-通过注释发送项jx step helm test <RELEASE>

  2. 检查Android(客户端)中是否有问题-通过注释onMessage。 ws.send(JSON.stringify(whatever));然后,看看您如何处理数据并注释掉那些部分。在Log.d("TAG","onMessage: " +text);

  3. 上运行日志猫

这至少应该帮助您查明问题,因为很难找到NodeJs Websocket帮助。 onClosed, onFailure好的烹饪书籍,项目视频教程很难获得。

我以Json数组的形式获取数据,并试图以错误的方式填充到回收站视图中。这是我的问题。

您还应该在node.js文件中尝试以下代码以查看原因

Languages are not hard - its the documentation, support and lack of community which is difficult.

有关完整问题和解决方案,请参见此处:Websocket closed code: 1006 Node Android okhttp3 AmazonEc2