gpt4 book ai didi

node.js - NodeJS Einaros WS 连接超时

转载 作者:搜寻专家 更新时间:2023-10-31 22:21:58 24 4
gpt4 key购买 nike

我在一台计算机(服务器)上使用Einaros WS模块和Node JS,当我使用另一台连接时它工作正常>(客户端) 计算机。

如果我插入网络电缆,ws.on('close', function()... 不会触发,我正在寻求建议是否:

  • 我必须实现自己的 ping/pong,或者

  • 有一个内置功能可以自动处理这个问题。

最佳答案

Einaros WS 确实能够发送大多数浏览器和套接字框架都能理解的 Ping 和 Pong 帧。我已经在 iOS 上使用 Socket Rocket 进行了测试,它可以毫无问题地理解 Einaros 的 Ping 帧。您必须想出应用程序特定的逻辑,即 ping 的频率,以及您可以容忍的错过的 pong 次数。 Einaros WS 具有 ping() 和 pong() 函数来发送 ping 或 pong。您收听“pong”事件以了解您何时收到来自客户的响应。以下是我在代码中的做法:

wss.on("connection", function(ws) {
console.log("websocket connection open");
ws.pingssent = 0;
var interval = setInterval(function() {
if (ws.pingssent >= 2) {// how many missed pings you will tolerate before assuming connection broken.
ws.close();
} else {
ws.ping();
ws.pingssent++;
}
}, 75*1000);// 75 seconds between pings
ws.on("pong", function() { // we received a pong from the client.
ws.pingssent = 0; // reset ping counter.
});
});

对于 Socket Rocket,客户端不需要任何代码。因此兼容的浏览器和客户端将自动响应 Pongs。

关于node.js - NodeJS Einaros WS 连接超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25352111/

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