我試圖實現故障安全websocket包裝。我遇到的問題是處理超時錯誤。邏輯應該是:如果套接字在$ timeoutInMiliseconds期間未打開 - 必須關閉並重新打開$ N次。WebSocket連接超時
我正在寫這樣的東西。
var maxReconects = 0;
var ws = new WebSocket(url);
var onCloseHandler = function() {
if (maxReconects < N) {
maxReconects++;
// construct new Websocket
....
}
};
ws.onclose = onCloseHandler;
var timeout = setTimeout(function() {
console.log("Socket connection timeout",ws.readyState);
timedOut = true;
ws.close(); <--- ws.readyState is 0 here
timedOut = false;
},timeoutInMiliseconds);
但問題是處理超時的WebSockets正確的方式 - 如果我試圖關閉未被連接插座我收到警告鉻:
「WebSocket連接到「WS://127.0.0.1:9010 /超時「失敗:WebSocket在連接建立之前關閉。」
我不知道如何避免它 - ws接口沒有中止功能。
我試過的其他aproach不是關閉套接字超時,如果它不連接,但只是標記爲不使用更多,關閉它,如果它收到readyState不止一個 - 但它可能會產生可能的泄漏,並複雜的這樣簡單的任務。