[英]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.