2015-05-06 2 views
0

Моего код кофе, чтобы установить соединение WebSocket, когда его нет возврата ошибки:WebSocket установить пуленепробиваемый Connection

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, но я думаю, что это грязно. Есть ли другой способ устранения неполадок?

+0

есть некоторые 'readyState' собственности, может быть, это помогает http://stackoverflow.com/questions/11809267/how-do-i -know-если-связь-это-живой-с-WebSockets –

ответ

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); 
 
});

Смежные вопросы