Я использовал этот шаблон некоторое время для чистого ванильного JavaScript, и он поддерживает несколько случаев больше, чем другие ответы.
document.addEventListener("DOMContentLoaded", function() {
'use strict';
var ws = null;
function start(){
ws = new WebSocket("ws://localhost/");
ws.onopen = function(){
console.log('connected!');
};
ws.onmessage = function(e){
console.log(e.data);
};
ws.onclose = function(){
console.log('closed!');
//reconnect now
check();
};
}
function check(){
if(!ws || ws.readyState == 3) start();
}
start();
setInterval(check, 5000);
});
Это будет повторяться, как только сервер закроет соединение,и он будет проверять соединение, чтобы убедиться, что оно работает каждые 5 секунд.
Так что, если сервер не работает, когда он запускается или во время события onclose, соединение все равно будет возвращено, как только он снова будет в сети.
ПРИМЕЧАНИЕ. Использование этого скрипта не позволит вам когда-либо прекратить попытки открыть соединение ... но я думаю, что вы этого хотите?