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);
});
我的咖啡代码在不存在时建立 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);
});