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() { // for (i in ws_address_list) { // console.log("try to connect " + ws_address_list[i]) // try { socket = new WebSocket(ws_address_list[ws_index]); // } catch (error) { // console.error("failed to connect to " + ws_address_list[i] + "\n" + error); // } // } // socket = new WebSocket("ws://192.168.1.130"); 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; }; }