Catch WebSocket异常:“WebSocket握手期间出错:意外响应代码:503”

时间:2015-09-08 15:49:44

标签: javascript web websocket

我正在尝试实现一个WebSocket连接,该连接尝试在我的网站关闭时每隔X秒重新连接一次,直到它再次重新联机。到目前为止,我有这个:

var onCloseHandler = function() {
    reconnect();
}

function reconnect() {
    try {
        console.log('Connection lost, trying to reconnect...');
        socket = new WebSocket(myUrl);

        socket.onerror = onErrorHandler;
        socket.onmessage = onMessageHandler;
        socket.onopen = onOpenHandler;
        socket.onclose = onCloseHandler;
    } catch (err) {
        setTimeout(function() {
            reconnect();
        }, 1000);
    }
}

我的问题是,当第一次调用onCloseHandler时(即当我的网站突然离线时),new WebSocket()调用会抛出下一个异常:

WebSocket connection to '<here_goes_my_url>' failed: Error during WebSocket handshake: Unexpected response code: 503

并且没有办法捕获它(在X秒时间内再次调用相同的函数)或者让执行移动到下一行。它只是崩溃,通过浏览器的控制台显示异常,并停止执行。

有没有办法捕获此异常?

提前致谢。

编辑:为了说清楚,onclose事件不会第二次被调用,我已经检查过了。此外,例外(因此当站点离线时无法连接)很好;我正在寻找的方法是检测它并将执行驱动到setTimeout块的catch

0 个答案:

没有答案