NodeJS Einaros WS连接超时

Jac*_* M. 7 node.js

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

如果我插上网线,ws.on('close', function()...它不会开火,我正在寻求建议是否:

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

  • 有一个内置功能可以自动处理.

Pra*_*era 16

Einaros WS确实能够发送大多数浏览器和套接字框架都能理解的Ping和Pong帧.我已经在iOS上测试了Socket Rocket,它对于Einaros的Ping帧没有任何问题.你必须提出应用程序特定的逻辑,用于ping的频率,以及你能容忍多少错过的pong.Einaros WS有ping()和pong()函数来发送ping或pongs.您收听"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.
    });
});
Run Code Online (Sandbox Code Playgroud)

在Socket Rocket的情况下,客户端不需要代码.因此兼容的浏览器和客户端将自动响应Pongs.