diff --git a/cmd/video_server_backend/main.go b/cmd/video_server_backend/main.go index 8d245f1..644ac08 100644 --- a/cmd/video_server_backend/main.go +++ b/cmd/video_server_backend/main.go @@ -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 { - if err != nil { - return err - } + 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 strings.HasSuffix(path, ".mp4") { - files = append(files, path) + if len(msg)+len(jsonMsg) > 4096 { + fmt.Println("sending message") + err = conn.WriteMessage(websocket.TextMessage, msg) + if err != nil { + log.Println(err) + return err + } + msg = jsonMsg + } else { + msg = append(msg, jsonMsg...) + } } return nil }) if err != nil { - // http.Error(w, "Could not read video directory.", http.StatusInternalServerError) - return + log.Println(err) } - 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) - if err != nil { - log.Println(err) - } + // 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) {