代码之家  ›  专栏  ›  技术社区  ›  hernan43

发送时WebSocket关闭

  •  6
  • hernan43  · 技术社区  · 14 年前

    所以我看到了这篇很棒的博文, Experimenting with Node.js . 我决定试着用作者的电脑自己建立它 gist . 它不起作用。

    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和firefox4.0测试版中都试过这个。他们都表现出相同的行为。如果我去 original blog site ,工作正常。

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

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

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

    我在这里发现了一些类似的问题,但要么没有发布修复程序就解决了,要么似乎不适用于这种情况。我可以把密码从 主旨 如果这能让事情变得容易些。

    3 回复  |  直到 14 年前
        1
  •  2
  •   calvinf    8 年前

    “返回包含服务器发送的结束代码的无符号短字符。以下值是允许的状态代码。”

    • 1000:正常关闭
    • 1002:关闭\u协议\u错误
    • 1003:不支持关闭
    • 1005:关闭\u无\u状态

    See CloseEvent API docs on MDN 更多。

        2
  •  1
  •   hernan43    14 年前

    主要头巾。尽管我相信自己安装了Node.js的最新版本,但我没有安装。我有几台机器上面有Node.js我肯定是迷路了。我有Node.js v0.1.96。升级到v0.1.102后,一切正常。

        3
  •  0
  •   kanaka    14 年前

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

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

    在Android中,对我来说问题在于如何处理数据。我可以通过做以下操作来精确定位。

    1. ws.send(JSON.stringify(whatever)); .

    2. 通过评论onMessage检查Android(客户端)中是否有错误。 Log.d("TAG","onMessage: " +text); onClosed, onFailure

    Languages are not hard - its the documentation, support and lack of community which is difficult. 好的烹饪书、项目视频教程很难找到。

    // Connection Closed
    ws.on('close', function close(code, reason) {
    console.log('ws is closed with code: ' + code + ' reason: ' + reason);
    });
    
    // On Error
    ws.on('error', function(e) {
        console.log("error occured" +e);
    });
    

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