gpt4 book ai didi

Node.js + ws - websocket 意外关闭

转载 作者:搜寻专家 更新时间:2023-11-01 00:07:01 25 4
gpt4 key购买 nike

我有一个 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 上出现...

关于Node.js + ws - websocket 意外关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32747815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com