Socket send batches of videos
All checks were successful
gitea/video-server-backend/pipeline/head This commit looks good

This commit is contained in:
Jose134 2024-08-11 21:35:08 +02:00
parent 5cefad8df3
commit 02accfa66b

View File

@ -15,7 +15,7 @@ import (
var upgrader = websocket.Upgrader{
ReadBufferSize: 1024,
WriteBufferSize: 1024,
WriteBufferSize: 4096,
CheckOrigin: func(r *http.Request) bool {
return true
},
@ -53,36 +53,46 @@ func connectSearchSocket(w http.ResponseWriter, r *http.Request) {
conn.Close()
}()
files := []string{}
var msg = []byte{}
err = filepath.Walk(VIDEOS_DIR, func(path string, info os.FileInfo, err error) error {
fmt.Println("checking " + path)
if strings.HasSuffix(path, ".mp4") && strings.Contains(path, query) {
fmt.Println("found video " + path)
jsonMsg, err := json.Marshal(Video{Filename: path})
if err != nil {
log.Println(err)
}
jsonMsg = append(jsonMsg, []byte("\n")...)
if len(msg)+len(jsonMsg) > 4096 {
fmt.Println("sending message")
err = conn.WriteMessage(websocket.TextMessage, msg)
if err != nil {
log.Println(err)
return err
}
if strings.HasSuffix(path, ".mp4") {
files = append(files, path)
msg = jsonMsg
} else {
msg = append(msg, jsonMsg...)
}
}
return nil
})
if err != nil {
// http.Error(w, "Could not read video directory.", http.StatusInternalServerError)
return
}
for _, file := range files {
if strings.Contains(file, query) {
jsonMsg, err := json.Marshal(Video{Filename: file})
if err != nil {
log.Println(err)
}
err = conn.WriteMessage(websocket.TextMessage, jsonMsg)
// Send remaining messages
if len(msg) > 0 {
err = conn.WriteMessage(websocket.TextMessage, msg)
if err != nil {
log.Println(err)
}
}
}
fmt.Println("done")
}
func streamVideo(w http.ResponseWriter, r *http.Request) {