add reconnect & format index

Signed-off-by: Christian Richter <crichter@owncloud.com>
This commit is contained in:
Christian Richter
2022-07-17 11:16:21 +02:00
parent 983570594d
commit b01cf0ce89

View File

@@ -1,122 +1,128 @@
<html> <html>
<head> <head>
<script type='text/javascript' src='http://www.youtube.com/player_api'></script> <script
<title>Weirdradio</title></head> type="text/javascript"
<style> src="http://www.youtube.com/player_api"
div.body { ></script>
width: 1024px; <title>Weirdradio</title>
height: 768px; </head>
border: solid 1px; <style>
padding: 1pc; div.body {
} width: 1024px;
div.leftcolumn { height: 768px;
width: 30%; border: solid 1px;
float: left; padding: 1pc;
} }
div.title { div.leftcolumn {
height: 20%; width: 30%;
} float: left;
div.playlist { }
height: 80%; div.title {
} height: 20%;
div.rightcolumn { }
width: 60%; div.playlist {
float: left; height: 80%;
} }
#playerframe { div.rightcolumn {
height: 100%; width: 60%;
width: 100%; float: left;
background-color: purple; }
} #playerframe {
</style> height: 100%;
<body onload="connectSocket()"> width: 100%;
<div class="body"> background-color: purple;
<div class="leftcolumn"> }
<div class="title"> </style>
<h1>Weirdradio</h1> <body onload="connectSocket()">
</div> <div class="body">
<div id="playlist" class="playlist"> <div class="leftcolumn">
{playlist} <div class="title">
</div> <h1>Weirdradio</h1>
</div> </div>
<div class="rightcolumn"> <div id="playlist" class="playlist">{playlist}</div>
<div class="playerframe"> </div>
<div id="player"></div> <div class="rightcolumn">
</div> <div class="playerframe">
<div id="player"></div>
</div> </div>
</div> </div>
</body> </div>
<script> </body>
var playlist = [] <script>
var tag = document.createElement('script'); var playlist = [];
var tag = document.createElement("script");
tag.src = "https://www.youtube.com/iframe_api"; tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0]; var firstScriptTag = document.getElementsByTagName("script")[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
// 3. This function creates an <iframe> (and YouTube player) // 3. This function creates an <iframe> (and YouTube player)
// after the API code downloads. // after the API code downloads.
var player; var player;
function onYouTubeIframeAPIReady() { function onYouTubeIframeAPIReady() {
player = new YT.Player('player', { player = new YT.Player("player", {
height: '390', height: "390",
width: '640', width: "640",
videoId: 'Wch3gJG2GJ4', videoId: "Wch3gJG2GJ4",
playerVars: { playerVars: {
'playsinline': 1 playsinline: 1,
}, },
events: { events: {
'onReady': onPlayerReady, onReady: onPlayerReady,
'onStateChange': onPlayerStateChange onStateChange: onPlayerStateChange,
} },
}); });
} }
function onPlayerReady(event) { function onPlayerReady(event) {
event.target.playVideo(); event.target.playVideo();
} }
var done = false; var done = false;
function onPlayerStateChange(event) { function onPlayerStateChange(event) {
if (event.data == 0) { if (event.data == 0) {
console.log("playing stopped") console.log("playing stopped");
} }
//if (event.data == YT.PlayerState.PLAYING && !done) { //if (event.data == YT.PlayerState.PLAYING && !done) {
// setTimeout(stopVideo, 6000); // setTimeout(stopVideo, 6000);
// done = true; // done = true;
//} //}
} }
function stopVideo() { function stopVideo() {
player.stopVideo(); player.stopVideo();
} }
function connectSocket() { function connectSocket() {
baseUrl = (window.location.host).replace("8080", "8090") baseUrl = window.location.host.replace("8080", "8090");
let socket = new WebSocket("ws://"+baseUrl); let socket = new WebSocket("ws://" + baseUrl);
socket.onopen = function(e) { socket.onopen = function (e) {
console.log("[open] Connection established"); console.log("[open] Connection established");
}; };
socket.onmessage = function(event) { // TODO: on close and on error attempt reconnect
data = JSON.parse(event.data) socket.onmessage = function (event) {
if (data["videoId"] != undefined && data["videoId"] != null) { data = JSON.parse(event.data);
playlist.push(data) if (data["videoId"] != undefined && data["videoId"] != null) {
updatePlaylist() playlist.push(data);
player.loadVideoById(data["videoId"]) updatePlaylist();
player.playVideo() player.loadVideoById(data["videoId"]);
console.log(`[message] Data received from server: ${event.data}`); player.playVideo();
} else { console.log(`[message] Data received from server: ${event.data}`);
console.log(`[unparseable message] Data received from server ${event.data}`) } else {
} console.log(
}; `[unparseable message] Data received from server ${event.data}`
);
} }
};
}
function updatePlaylist() { function updatePlaylist() {
pl = document.getElementById("playlist") pl = document.getElementById("playlist");
output = "" output = "";
playlist.forEach((e) => { playlist.forEach((e) => {
output = output + `<div><div>${e.title}</div><div>${e.link}</div></div>` output =
}) output + `<div><div>${e.title}</div><div>${e.link}</div></div>`;
pl.innerHTML = output });
} pl.innerHTML = output;
</script> }
</script>
</html> </html>