Node.js + ws - websocket 意外关闭

Node.js + ws - websocket is unexpectedly closing

我有一个 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 文档中没有看到这个功能.任何想法将不胜感激。

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

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

我更换了其中一个路由器后,这个问题就解决了。我将此归因于旧路由器的硬件问题。这是消费级硬件,所以我希望这不会成为生产中的问题。这确实让我想知道有多少此类错误可能会在 Internet 上出现...