1
0
mirror of https://github.com/KubaPro010/fm-dx-webserver.git synced 2026-02-26 22:13:53 +01:00

serialport reconnect rework - v1.3.0.1

This commit is contained in:
Amateur Audio Dude
2024-09-23 17:48:16 +10:00
committed by GitHub
parent 835cfa8352
commit 8b265ecf71

View File

@@ -184,7 +184,7 @@ $(document).ready(function () {
//FMLIST logging
$('#log-fmlist').on('click', function() {
console.log('asdfdasf');
//console.log('FMLIST');
$.ajax({
url: './log_fmlist',
method: 'GET',
@@ -284,6 +284,18 @@ function sendPingRequest() {
console.warn("Main/UI WebSocket closed during reconnection. Will attempt to reconnect...");
};
}
if (connectionLost) {
if (dataTimeout == dataTimeoutPrevious) {
connectionLost = true;
} else {
setTimeout(() => {
window.socket.close(1000, 'Normal closure'); // Force reconnection to unfreeze browser UI
}, 8000); // Timeout must be higher than TIMEOUT_DURATION
connectionLost = false;
requiresAudioStreamRestart = true;
console.log("Radio data restored.");
}
}
}
// Automatic UI resume on WebSocket reconnect
@@ -298,7 +310,9 @@ function handleWebSocketMessage(event) {
parsedData = JSON.parse(event.data);
resetDataTimeout();
updatePanels(parsedData);
const sum = signalData.reduce((acc, strNum) => acc + parseFloat(strNum), 0);
const averageSignal = sum / signalData.length;
data.push(averageSignal);
@@ -455,12 +469,18 @@ function updateCanvas(parsedData, signalChart) {
let reconnectTimer = null;
let dataTimeout = null;
let dataTimeoutPrevious = null;
let connectionLost = false;
let requiresAudioStreamRestart = false;
const TIMEOUT_DURATION = 5000; // 5 seconds timeout for lost connection
const resetDataTimeout = () => {
clearTimeout(dataTimeout);
dataTimeout = setTimeout(() => {
sendToast('warning', 'Connection lost', 'Attempting to reconnect...', false, false);
connectionLost = true;
dataTimeoutPrevious = dataTimeout;
}, TIMEOUT_DURATION);
};