LedBars/RpiLedBars/frontend/web/index_network_handler.js

67 lines
2.1 KiB
JavaScript
Raw Permalink Normal View History

2022-07-20 16:57:01 +02:00
var ws_index = 0
const ws_address_list = ["ws://192.168.4.1:8080", "ws://192.168.1.130:8080", "ws://tropicananass.ovh:8080"]
2021-10-18 20:56:35 +02:00
function wait_reconnection() {
--timeout;
document.getElementById("time-left").innerHTML = timeout + "s";
if (timeout == 0) {
clearInterval(timer);
reconnect();
}
}
function reconnect() {
2022-07-20 16:57:01 +02:00
// 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");
2021-10-18 20:56:35 +02:00
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}`);
2022-07-20 16:57:01 +02:00
++ws_index;
if (ws_index >= ws_address_list.length) {
ws_index = 0;
}
document.getElementById("ws-input").elements["ws-selection"][ws_index].checked = true;
2021-10-18 20:56:35 +02:00
};
}