NodeJS Einaros WS连接超时

 高度的寂寞 发布于 2022-12-27 14:30

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

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

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

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

Praneeth Wan.. 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.
    });
});

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

1 个回答
  • 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.
        });
    });
    

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

    2022-12-27 14:35 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有