diff --git a/api/controllers/container.go b/api/controllers/container.go index d8e634a..72985a1 100644 --- a/api/controllers/container.go +++ b/api/controllers/container.go @@ -1,7 +1,7 @@ package controllers import ( - "bytes" + "io" "log" "magmise/models" "net/http" @@ -44,17 +44,19 @@ func (c Container) Stop(w http.ResponseWriter, r *http.Request) { } func (c Container) Logs(w http.ResponseWriter, r *http.Request) { + name := chi.URLParam(r, "name") if name == "" { http.Error(w, "Missing container name", http.StatusNotFound) return } + log.Println("Logs ", name) id, err := models.GetId(name) if err != nil { http.Error(w, err.Error(), http.StatusNotFound) return } - ws, err := upgrader.Upgrade(w, r, nil) + ws, err := Websocket(w, r) if err != nil { log.Print("upgrade:", err) return @@ -65,10 +67,7 @@ func (c Container) Logs(w http.ResponseWriter, r *http.Request) { http.Error(w, err.Error(), http.StatusNotFound) return } - buf := new(bytes.Buffer) - for { + defer logs.Close() + io.Copy(ws, logs) - buf.ReadFrom(logs) - ws.WriteMessage(0, buf.Bytes()) - } }