我正在尝试实现一个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
。