JavaScript 處理WebSocket的超時

admin發表於2017-04-12

通常情況下,WebSocket連線建立後,如果30秒內沒有任何活動,伺服器端會對連線進行超時處理。

防火牆也可以對單位週期沒有活動的連線進行超時處理。

為了防止這種情況的發生,可以每隔一定時間,往伺服器傳送一條空的訊息。

可以通過下面這兩個函式來實現這個需求,一個用於使連線保持活動狀態,另一個專門用於結束這個狀態。

[JavaScript] 純文字檢視 複製程式碼
var timerID = 0; 
function keepAlive() { 
 var timeout = 15000; 
 if (webSocket.readyState == webSocket.OPEN) { 
  webSocket.send(''); 
 } 
 timerId = setTimeout(keepAlive, timeout); 
} 
function cancelKeepAlive() { 
 if (timerId) { 
  cancelTimeout(timerId); 
 } 
}

keepAlive函式可以放在WebSocket連線的onOpen()方法的最後面,cancelKeepAlive()放在onClose()方法的最末尾。

相關文章