From 886485255a442b84ac4645bbcd34c11c77b1fea2 Mon Sep 17 00:00:00 2001 From: Gabe Kangas Date: Thu, 18 Jun 2020 20:46:00 -0700 Subject: [PATCH] Fix errors on Firefox --- webroot/js/app.js | 1 + webroot/js/player/player.js | 11 ++++++----- webroot/js/status.js | 9 ++++++--- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/webroot/js/app.js b/webroot/js/app.js index 1ededd5a3..d8775f208 100644 --- a/webroot/js/app.js +++ b/webroot/js/app.js @@ -12,6 +12,7 @@ async function setupApp() { messages: [], description: "", title: "", + isOnline: false, }, watch: { messages: { diff --git a/webroot/js/player/player.js b/webroot/js/player/player.js index 2ee3a4959..47b9905e6 100644 --- a/webroot/js/player/player.js +++ b/webroot/js/player/player.js @@ -9,11 +9,11 @@ const player = videojs('video', null, function () { getStatus(); setInterval(getStatus, 5000); setupPlayerEventHandlers(); - }) player.ready(function () { console.log('Player ready.') + player.reset(); player.src({ type: 'application/x-mpegURL', src: streamURL }); }); @@ -44,9 +44,9 @@ function setupPlayerEventHandlers() { // console.log("stalled"); // }) // - // player.on('playing', function (e) { - // // console.log("playing"); - // }) + player.on('playing', function (e) { + clearTimeout(playerRestartTimer); + }) // // player.on('waiting', function (e) { // // console.log("waiting"); @@ -55,8 +55,9 @@ function setupPlayerEventHandlers() { function restartPlayer() { try { + console.log('restarting') const player = videojs('video'); - + player.pause(); player.src(player.src()); // Reload the same video player.load(); player.play(); diff --git a/webroot/js/status.js b/webroot/js/status.js index 347eba18c..ffcdb0a76 100644 --- a/webroot/js/status.js +++ b/webroot/js/status.js @@ -1,3 +1,5 @@ +var playerRestartTimer; + async function getStatus() { const url = "/status"; @@ -5,13 +7,14 @@ async function getStatus() { const response = await fetch(url); const status = await response.json(); + clearTimeout(playerRestartTimer); + if (!app.isOnline && status.online) { // The stream was offline, but now it's online. Force start of playback after an arbitrary // delay to make sure the stream has actual data ready to go. - setTimeout(function () { + playerRestartTimer = setTimeout(function () { restartPlayer(); - }, 3000) - + }, 3000); } app.streamStatus = status.online