如何捕获WebSocket连接中断?

Zac*_*ach 11 javascript websocket

在Firefox(至少)中,如果你按ESC,它将关闭所有打开的WebSockets连接.我需要捕获断开连接并尝试重新连接一旦它再次可用.

这是我试图实现的代码的一个示例,但是我能想出的任何内容都不会捕获错误并允许我优雅地处理它.

看看代码:http://jsfiddle.net/w5aAK/

var url = "ws://echo.websocket.org";
    try {
        socket = window['MozWebSocket'] ? new MozWebSocket(url) : new WebSocket(url);
        socket.onopen = function(){
            console.log('Socket is now open.');
        };
        socket.onerror = function (error) {
            console.error('There was an un-identified Web Socket error');
        };
        socket.onmessage = function (message) {
            console.info("Message: %o", message.data);
        };
    } catch (e) {
        console.error('Sorry, the web socket at "%s" is un-available', url);
    }

setTimeout(function(){
    socket.send("Hello World");
}, 1000);
Run Code Online (Sandbox Code Playgroud)

打开控制台并观察输出.

我在这里做错了,还是因为连接在JS脚本范围之外运行而不可能?

任何输入都会有所帮助.

谢谢!

leg*_*ter 5

您可以为socket.onclose事件附加处理程序.当您按ESC并且连接中断时将调用它.

请参阅:http://jsfiddle.net/w5aAK/1/

您目前无法解决的一个问题是输出到控制台的中断错误.在我害怕的那一刻,我无法捕捉到这一点.

  • _目前无法解决的一个问题是输出到控制台的中断错误._在任何规范或文档中都有这样的参考吗? (4认同)