Websocket建立防弹连接

时间:2015-05-06 16:08:10

标签: javascript firefox websocket coffeescript

我的咖啡代码在不存在时建立websocket连接会返回错误:

socket = new WebSocket('ws://localhost:8080')
#=> Firefox can't establish a connection to the server at ws://localhost:8080/.
#=> socket = new WebSocket('ws://localhost:8080');

WebSocket的正常行为,但我希望WebSockets的工作方式如下:

# pseudocode
if websocket.establish_connection()
  # do thing #1
else
  do thing no.2

我想到try ... catch但我觉得它很脏。还有其他方法可以排除故障吗?

1 个答案:

答案 0 :(得分:1)

它实际上没有抛出错误,程序继续执行。它只是将错误(异步)记录到控制台。要处理连接失败,您可以绑定到套接字onerror事件。

这样的事情可行:



function establishWSConnection(url) {
    return new Promise(function(res, rej) {
        var ws = new WebSocket(url);
        ws.onerror = rej;
        ws.onopen = function () {
            ws.onerror = null;
            res(ws);
        }
    });
}

establishWSConnection('ws://localhost:1234').then(function(ws) {
    // do stuff
}).catch(function(err){
    console.log(err);
});