2

我正在尝试构建一个逻辑,在该逻辑中我尝试在断开连接时重新连接 websocket 连接。我写了以下逻辑。

var webSocketObj = null;
var countForWebSocketReconnection = 0;
var intervalIdForWebSocket = "";

function webSocketConnection (message_arr) {
    if ("WebSocket" in window) {
        try {
            webSocketObj.onopen = null;
            webSocketObj.onmessage = null;
            webSocketObj.onclose = null;
            webSocketObj.onerror = null;

            webSocketObj.close();
        } catch (e) {
             console.log('try/catch around location update'+e);
        } finally {
            webSocketObj = new WebSocket(webSocketUrl);
            webSocketObj.onopen = function() {
                webSocketOpen(message_arr);
            };
            webSocketObj.onmessage = function (evt) {
                websocketMessage(evt);
            }
            webSocketObj.onclose = function() {               
                if(countForWebSocketReconnection>=6){
                    alert("Web-socket connection is terminated by the browser. Please reload the page.");
                    clearTimeout(intervalIdForWebSocket );
                    intervalIdForWebSocket = "";
                } else {
                    monitorIntervalIdForWebSocket = setTimeout(function(){
                        webSocketObj.onopen = null;
                        webSocketObj.onmessage = null;
                        webSocketObj.onclose = null;
                        webSocketObj.onerror = null;

                        webSocketObj.close();

                        webSocketConnection(message_arr);
                        countForWebSocketReconnection++;
                    }, 10000);
                }
            }
            webSocketObj.onerror = function(evt) {
               webSocketOnError(evt);
            }
           }
    } else {

    }
}

在任何断开连接的情况下,它会尝试重新连接 6 次。在尝试这样做时,它会打开 6 个连接(以防 6 次尝试连接失败),因为我在 Google Chrome 控制台上进行了监控。有人可以在这里建议我做错了什么还是我的方法有问题?这将非常有帮助。

4

0 回答 0