Unverified Commit 956a994b authored by fauno's avatar fauno
Browse files

recuperar el streaming cuando se corta

parent bb10e88e
......@@ -4,7 +4,19 @@
// TODO hacerlo en JS puro
{% node_module zepto/dist/zepto.min.js %}
function streaming_for_firefox() {
// Estamos esperando la descarga de un stream
var waiting = false;
// El intervalo que reintenta, si está vacío se crea uno nuevo al
// siguiente error.
var waiter = null;
function streaming() {
// Si ya estamos esperando no tenemos que hacer nada
if (waiting) return;
// Indicarle a otros streamers que ya estamos trabajando.
waiting = true;
// Encontrar todos los <video>
var video = $('video');
// Cambiar el src para que incluya un timestamp, esto engaña a Firefox
......@@ -22,12 +34,36 @@ function streaming_for_firefox() {
video.get(0).play();
}
// Iniciar el streaming al cargar la página
$(document).ready(function() {
streaming_for_firefox();
});
// Iniciar el streaming al cargar la página
streaming();
// Volver a reproducir cuando se corte
$('video').on('ended', function() {
streaming_for_firefox();
// Cuando estamos reproduciendo dejamos de esperar y limpiamos todas
// las recargas después de un error
$('video').on('playing', function() {
waiting = false;
if (waiter) {
clearInterval(waiter);
waiter = null;
}
});
// Volver a reproducir cuando se corte
$('video').on('ended', function() {
console.log('Reiniciando transmisión');
streaming();
});
// Si falla la carga, por ejemplo mientras vuelve la transmisión,
// reintentar regularmente. Si ya estamos intentando, no hacer nada.
$('video source').on('error', function() {
// Señalamos que el intento anterior falló
waiting = false;
// Si no hay una tarea esperando, configurarla
if (!waiter) {
console.log('Falló la carga de la fuente, reiniciando transmisión.');
// Reintentar cada 2 segundos.
waiter = setInterval(streaming, 2000);
}
});
});
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment