我在用埃纳罗斯WS模块与Node JS在一台计算机上(server)
当我使用另一个连接时它工作正常(client)
电脑。
如果我插入网络电缆,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。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)