livestream/static/js/script.js

75 lines
2.2 KiB
JavaScript
Raw Normal View History

2023-06-13 00:07:14 +03:00
const WebsocketMessageTypeViewers = 0;
const WebsocketMessageTypeCurrentlyPlaying = 1;
2024-02-24 19:40:46 +02:00
const WebsocketMessageTypeChatMessage = 2;
const messages = document.getElementById("messages");
const messageInput = document.getElementById("message-input");
const messageSubmit = document.getElementById("message-submit");
2023-06-13 00:07:14 +03:00
2024-02-24 16:54:27 +02:00
let stream = videojs('livestream');
2023-06-13 00:07:14 +03:00
let wsurl = "";
if (location.protocol === 'https:') {
wsurl = "wss://" + window.location.host + "/ws"
} else {
wsurl = "ws://" + window.location.host + "/ws"
}
let websocket = new WebSocket(wsurl)
2024-02-24 19:40:46 +02:00
function sendInput() {
let message = {
type: WebsocketMessageTypeChatMessage,
message: messageInput.value,
};
messageInput.value = "";
websocket.send(JSON.stringify(message));
}
messageInput.addEventListener("keyup", function(e) {
if (e.key === "Enter") {
sendInput()
}
});
messageSubmit.addEventListener("click", (e) => sendInput())
2023-06-13 00:07:14 +03:00
websocket.onmessage = (event) => {
let data = JSON.parse(event.data)
switch (data.type) {
case WebsocketMessageTypeViewers:
viewers.innerText = data.message;
break
case WebsocketMessageTypeCurrentlyPlaying:
currently_playing.innerText = data.message
2024-02-24 16:54:27 +02:00
2024-02-24 18:23:07 +02:00
stream.one('error', function() {
stream.src({ type: 'application/x-mpegURL', src: '/media/stream.m3u8' });
2024-02-24 18:23:07 +02:00
stream.play();
console.log("trying again")
})
2024-02-24 16:54:27 +02:00
2024-02-24 19:40:46 +02:00
break
case WebsocketMessageTypeChatMessage:
let message = document.createElement("div");
message.className = "message";
let username = document.createElement("div");
username.className = "message-username";
2024-02-24 22:05:49 +02:00
username.style.color = "#" + data.message.username_color;
2024-02-24 19:40:46 +02:00
username.innerText = data.message.username;
message.appendChild(username);
let content = document.createElement("div");
content.className = "message-content";
content.innerText = data.message.content;
message.appendChild(content);
messages.appendChild(message);
2023-06-13 00:07:14 +03:00
break
}
};
2024-02-24 16:54:27 +02:00
feather.replace()