var ws_index = 0 const ws_address_list = ["ws://192.168.4.1:8080", "ws://192.168.1.130:8080", "ws://tropicananass.ovh:8080"] function wait_reconnection() { --timeout; document.getElementById("time-left").innerHTML = timeout + "s"; if (timeout == 0) { clearInterval(timer); reconnect(); } } function reconnect() { address = window.location.href.replace(/(http|https):\/\//i, "ws://") address = address.slice(0, address.length - 1) + ":8080" console.log("connecting to " + address) socket = new WebSocket(address) timeout = 60; socket.onopen = function (e) { console.log("[open] ws: Connection established"); clearInterval(timer); modal.hide(); }; socket.onmessage = function (event) { console.log(`[message] ws: Data received from server: ${event.data}`); let message = event.data.split(":"); let command = message[0]; let payload = message[1]; console.log(command + ", " + payload); switch (command) { case 'm': document.getElementById("mode-input").elements["mode-selection"][payload].checked = true; break; default: break; } }; socket.onclose = function (event) { if (event.wasClean) { console.log(`[close] ws: Connection closed cleanly, code=${event.code} reason=${event.reason}`); } else { // e.g. server process killed or network down // event.code is usually 1006 in this case console.log('[close] ws: Connection died'); timer = setInterval(wait_reconnection, 1000); modal.show(); } }; socket.onerror = function (error) { console.log(`[error] ws: ${error.message}`); ++ws_index; if (ws_index >= ws_address_list.length) { ws_index = 0; } document.getElementById("ws-input").elements["ws-selection"][ws_index].checked = true; }; }