Node.js + ws - websocket意外关闭

时间:2015-09-23 19:21:14

标签: node.js websocket qt5

我有 Node.js + ws 服务器和 Qt客户端。我在某些情况下意外关闭了websocket连接的问题。在我的客户端中,我遍历一个对象列表并向服务器发送一系列请求。然后,服务器访问数据库,然后将响应写回客户端。这是(简化的)基本服务器循环:

// ...

var httpServer = http.createServer(//params);
var WebSocketServer = require('ws').Server;
var wss = new WebSocketServer({ server: httpServer });

// ...

wss.on('connection', function connection(ws) {

  ws.on('message', function incoming(msg) {
    handleRequest(JSON.parse(msg), function (err, result) {
      if (err) throw err;
      ws.send(JSON.stringify(result), function ack(error) {
        if (error) throw error;
      }
    }
  });

});

如果我限制来自客户端的请求数量,一切正常。但是,如果我达到了临界数量的请求,数据将停止从服务器返回,并且websocket连接超时。

我想知道在每次写入之前或之后是否需要刷新服务器上的websocket? QtWebSocket flush()方法,但我在 ws 文档中看不到此功能。任何想法都将不胜感激。

更新:我还应注意,没有错误发送到 ws wss 。数据停止流动。

更新2:好的,这似乎很明显是从我的客户端通过Internet向节点+ ws服务器传输超大数据包的问题。根据Wireshark跟踪,一旦达到超大阈值,套接字就会崩溃,但只有在我远程连接到服务器时才会出现问题。如果服务器在我的本地子网上,则超大数据包会正确传输到服务器。有任何想法如何调试这个?

1 个答案:

答案 0 :(得分:0)

我更换了一台路由器后,此问题得以解决。我正在解决旧路由器的硬件问题。这是消费级硬件,所以我希望这不应该是生产中的问题。它确实让我想知道有多少这类错误可能会在互联网上出现......