[英]How can I do Ping/Pong between JavaScript and NodeJS WebSocket?
[英]Why do I need ping-pong to detect websocket connection drops if I am already reconnecting onclose()?
我有連接到外部 WebSocket API 的代碼,如下所示:
const WebSocket = require('ws')
const ws = new WebSocket('wss://example.com/')
const connectExternalAPI() => {
ws.onopen = () => { ws.send(JSON.stringify('example': 'message')) }
ws.onerror = (event) => { console.error(event) }
ws.onmessage = (event) => { console.log(event.data) }
ws.onclose = (event) => {
console.error(event)
setTimeout(connectExternalAPI, 10000)
}
}
由於我已經嘗試在每次連接獲得onclose
時重新連接到 API,那么當這已經完成相同的事情時,還有什么必要額外實現ping-pong
來檢測連接斷開(並嘗試重新連接)?
是否存在即使連接可能已斷開也不會觸發onclose
情況?
如果連接被明確關閉,您幾乎會立即收到onclose
,但如果連接中斷,例如當您斷開以太網電纜時,則需要一些時間來獲得onclose
,可能不會在 TCP 檢測到連接丟失之前。 這可能需要幾分鍾,具體取決於您的設置。
順便說一下,它不一定是 Ping/Pong; 由服務器發送並在瀏覽器中接收和處理的心跳有時更容易實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.