Websocket 建立防弹连接

Websocket establish bulletproof connection

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

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 的正常行为,但我希望 WebSocket 像这样工作:

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

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

它实际上并没有抛出错误,程序继续执行。它只是将错误(异步)记录到控制台。要处理连接失败,您可以绑定到套接字 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);
});