45 lines
1.2 KiB
JavaScript
45 lines
1.2 KiB
JavaScript
var playerRestartTimer;
|
|
|
|
|
|
function handleStatus(status) {
|
|
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.
|
|
playerRestartTimer = setTimeout(restartPlayer, 3000);
|
|
}
|
|
|
|
app.streamStatus = status.online ? MESSAGE_ONLINE : MESSAGE_OFFLINE;
|
|
|
|
app.viewerCount = status.viewerCount;
|
|
app.sessionMaxViewerCount = status.sessionMaxViewerCount;
|
|
app.overallMaxViewerCount = status.overallMaxViewerCount;
|
|
app.isOnline = status.online;
|
|
setVideoPoster(app.isOnline);
|
|
}
|
|
|
|
function handleOffline() {
|
|
const player = videojs(VIDEO_ID);
|
|
player.poster(POSTER_DEFAULT);
|
|
app.streamStatus = MESSAGE_OFFLINE;
|
|
app.viewerCount = 0;
|
|
}
|
|
|
|
function getStatus() {
|
|
const options = {
|
|
// mode: 'no-cors',
|
|
}
|
|
fetch(URL_STATUS, options)
|
|
.then(response => {
|
|
if (!response.ok) {
|
|
throw new Error(`Network response was not ok ${response.ok}`);
|
|
}
|
|
return response.json();
|
|
})
|
|
.then(json => {
|
|
handleStatus(json);
|
|
})
|
|
.catch(error => {
|
|
handleOffline();
|
|
});
|
|
}
|