fix: front-end not save token

fix: sometimes not auto stream next video
This commit is contained in:
Nite07 2024-10-28 15:52:02 +08:00
parent dcdbf84c8c
commit 369b658d60
2 changed files with 26 additions and 6 deletions

View File

@ -378,7 +378,7 @@
ws.onopen = function () { ws.onopen = function () {
console.log("Connected to WebSocket"); console.log("Connected to WebSocket");
setStoredToken(document.getElementById("token-input").value); setStoredToken(token);
document.getElementById("token-screen").style.display = "none"; document.getElementById("token-screen").style.display = "none";
document.querySelector(".container-fluid").style.display = "flex"; document.querySelector(".container-fluid").style.display = "flex";
document.getElementById("status").textContent = document.getElementById("status").textContent =
@ -404,7 +404,6 @@
}; };
ws.onerror = function () { ws.onerror = function () {
localStorage.removeItem("streaming_token");
document.getElementById("token-error").style.display = "block"; document.getElementById("token-error").style.display = "block";
}; };
@ -425,12 +424,20 @@
localStorage.setItem("streaming_token", token); localStorage.setItem("streaming_token", token);
} }
document.addEventListener("DOMContentLoaded", function () {
const storedToken = getStoredToken();
if (storedToken) {
document.getElementById("token-input").value = storedToken;
validateToken();
}
});
function validateToken() { function validateToken() {
const tokenInput = document.getElementById("token-input"); const tokenInput = document.getElementById("token-input");
const token = tokenInput.value || getStoredToken(); if (tokenInput.value) {
if (token) {
tokenInput.value = token;
connectWebSocket(); connectWebSocket();
} else {
document.getElementById("token-error").style.display = "block";
} }
} }

View File

@ -129,8 +129,14 @@ func (s *Streamer) handleStart() {
s.writeOutput(fmt.Sprintf("stop stream: %s\n", videoPath)) s.writeOutput(fmt.Sprintf("stop stream: %s\n", videoPath))
if !s.state.manualControl { if !s.state.manualControl {
s.mailbox <- NextVideoMessage{} log.Println("ready to stream next video")
s.state.currentVideoIndex++
if s.state.currentVideoIndex >= len(s.state.videoList) {
s.state.currentVideoIndex = 0
}
s.mailbox <- StartMessage{}
} else { } else {
log.Println("manually control")
s.state.manualControl = false s.state.manualControl = false
} }
@ -143,15 +149,22 @@ func (s *Streamer) handleStop() {
return return
} }
log.Println("wait context to be cancelled")
s.state.cancel() s.state.cancel()
log.Println("context has been cancelled")
if s.state.cmd.Process != nil { if s.state.cmd.Process != nil {
log.Println("wait ffmpeg process stop")
select { select {
case <-s.state.waitDone: case <-s.state.waitDone:
case <-time.After(3 * time.Second): case <-time.After(3 * time.Second):
_ = s.state.cmd.Process.Kill() _ = s.state.cmd.Process.Kill()
} }
log.Println("ffmpeg process has stopped")
} }
s.state.cancel = nil
s.state.cmd = nil
} }
func (s *Streamer) handleAdd(path string) { func (s *Streamer) handleAdd(path string) {