NodeJS Einaros WS连接超时

我在一台计算机(server)上使用带节点JS的 Einaros WS模块,当使用另一台(client)计算机连接时,它工作正常。

如果我插上网线, ws.on('close', function()...不会触发,并且正在寻找build议:

  • 我必须实现我自己的乒乓球,或者

  • 有一个内置的function来自动处理。

Einaros WS确实能够发送大多数浏览器和套接字框架可以理解的Ping和Pong框架。 我已经在iOS上使用Socket Rocket进行了testing,对于Einaros的Ping框架没有任何问题。 你必须想出应用程序的特定逻辑,以多less次ping,以及你会容忍多less错过的pongs。 Einaros WS具有ping()和pong()函数来发送ping或pongs。 你听“邦”事件,知道你什么时候收到客户的回复。 以下是我在代码中的做法:

 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。