簡體   English   中英

NodeJS Einaros WS連接超時

[英]NodeJS Einaros WS Connection Timeout

我在一台計算機(server)上使用帶有Node JS的 Einaros WS模塊,當我使用另一台(client)計算機連接時,它可以正常工作。

如果我插上網線, ws.on('close', function()...沒有觸發,我正在尋找建議是否:

  • 我必須實現自己的ping / pong,或者

  • 有一個內置功能可以自動處理。

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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM