67 lines
2.1 KiB
JavaScript
67 lines
2.1 KiB
JavaScript
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;
|
|
};
|
|
} |