diff --git a/stream/index.html b/stream/index.html
index 01dea5e..85858e8 100644
--- a/stream/index.html
+++ b/stream/index.html
@@ -113,6 +113,29 @@
}
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,
// avec 40% comme valeur par défaut au tout premier lancement.
const VOLUME_KEY = "radieo-volume";