stream: auto-reconnect to the live stream with exponential backoff
If the stream drops (server restart, network loss), the player now retries goLive() on error/ended/stalled with a delay that doubles each failure, capped at 30s, and resets once audio flows again. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
155a13d50e
commit
6b52795ae1
1 changed files with 23 additions and 0 deletions
|
|
@ -113,6 +113,29 @@
|
||||||
}
|
}
|
||||||
goLive();
|
goLive();
|
||||||
|
|
||||||
|
// Reconnexion automatique : si le flux se coupe (serveur redémarré, réseau
|
||||||
|
// perdu…), on retente avec un délai qui double à chaque échec, plafonné à
|
||||||
|
// 30 s, pour ne pas marteler un serveur encore indisponible. Le compteur
|
||||||
|
// repart à zéro dès qu'on rejoue effectivement du son.
|
||||||
|
const RECONNECT_MIN = 1000, RECONNECT_MAX = 30000;
|
||||||
|
let reconnectDelay = RECONNECT_MIN;
|
||||||
|
let reconnectTimer = null;
|
||||||
|
function scheduleReconnect() {
|
||||||
|
if (reconnectTimer || player.paused) return;
|
||||||
|
reconnectTimer = setTimeout(() => {
|
||||||
|
reconnectTimer = null;
|
||||||
|
goLive();
|
||||||
|
reconnectDelay = Math.min(reconnectDelay * 2, RECONNECT_MAX);
|
||||||
|
}, reconnectDelay);
|
||||||
|
}
|
||||||
|
player.addEventListener("error", scheduleReconnect);
|
||||||
|
player.addEventListener("ended", scheduleReconnect);
|
||||||
|
player.addEventListener("stalled", scheduleReconnect);
|
||||||
|
player.addEventListener("playing", () => {
|
||||||
|
if (reconnectTimer) { clearTimeout(reconnectTimer); reconnectTimer = null; }
|
||||||
|
reconnectDelay = RECONNECT_MIN;
|
||||||
|
});
|
||||||
|
|
||||||
// Volume persistant : on restaure le dernier réglage de l'utilisateur,
|
// Volume persistant : on restaure le dernier réglage de l'utilisateur,
|
||||||
// avec 40% comme valeur par défaut au tout premier lancement.
|
// avec 40% comme valeur par défaut au tout premier lancement.
|
||||||
const VOLUME_KEY = "radieo-volume";
|
const VOLUME_KEY = "radieo-volume";
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue