From 885b7790d782bc046db2b57a42b658296339d0ad Mon Sep 17 00:00:00 2001 From: Erik Brakkee Date: Wed, 31 Jul 2024 19:52:01 +0200 Subject: [PATCH] doing the same thing as before but now rendering the status using a template. --- cmd/converge/sessionhandler.go | 46 ----------------------------- cmd/templaterender/render.go | 2 ++ pkg/server/converge/websessions.go | 9 ++---- pkg/server/templates/sessions.templ | 22 +++++++++++--- 4 files changed, 23 insertions(+), 56 deletions(-) delete mode 100644 cmd/converge/sessionhandler.go diff --git a/cmd/converge/sessionhandler.go b/cmd/converge/sessionhandler.go deleted file mode 100644 index 66a4efd..0000000 --- a/cmd/converge/sessionhandler.go +++ /dev/null @@ -1,46 +0,0 @@ -package main - -import ( - "log" - "net" - "net/http" - "strconv" - "time" -) - -type Message struct { - Type string `json:"type"` - Content string `json:"content"` -} - -func sessionHandler(w http.ResponseWriter, r *http.Request, conn net.Conn) { - log.Println("Got sessions websocket connection") - go func() { - for { - b := make([]byte, 1024) - log.Printf("Reading from %v", conn) - _, err := conn.Read(b) - if err != nil { - return - } - } - }() - i := 0 - for { - time.Sleep(1 * time.Second) - message := ` -
-New data: ` + strconv.Itoa(i) + ` -
-` - _, err := conn.Write([]byte(message)) - if err == nil { - _, err = conn.Write([]byte("\n")) - } - if err != nil { - log.Printf("ERROR sending message: %v", err) - return - } - i++ - } -} diff --git a/cmd/templaterender/render.go b/cmd/templaterender/render.go index 98c11bd..88a92d8 100644 --- a/cmd/templaterender/render.go +++ b/cmd/templaterender/render.go @@ -40,4 +40,6 @@ func main() { render(dir, "index.html", templates2.AboutTab) render(dir, "usage.html", usage) render(dir, "downloads.html", templates2.Downloads) + + render(dir, "sessions.html", templates2.SessionsTab) } diff --git a/pkg/server/converge/websessions.go b/pkg/server/converge/websessions.go index 673bf2f..2ebc4cb 100644 --- a/pkg/server/converge/websessions.go +++ b/pkg/server/converge/websessions.go @@ -1,7 +1,9 @@ package converge import ( + "context" "converge/pkg/models" + "converge/pkg/server/templates" "log" "net" "sync" @@ -65,12 +67,7 @@ func (session *WebSession) WriteNotifications() { log.Println("channel closed") } log.Println("Got notification: ", notification.Ascii) - msg := ` -
-

V1 ascii-art to be improved

-
` + notification.Ascii + `
-
` - _, err := session.conn.Write([]byte(msg)) + err := templates.State(notification).Render(context.Background(), session.conn) if err != nil { log.Printf("WS connection closed: %v", err) return diff --git a/pkg/server/templates/sessions.templ b/pkg/server/templates/sessions.templ index e743667..84fe631 100644 --- a/pkg/server/templates/sessions.templ +++ b/pkg/server/templates/sessions.templ @@ -1,20 +1,34 @@ package templates +import "converge/pkg/models" -templ Sessions() { + +templ Sessions(state *models.State) {

sessions

-
- Loading... +
+ if state != nil { + @State(state) + } else { + "Loading..." + }
} +templ State(state *models.State) { +
+
+     { state.Ascii }
+   
+
+} + templ SessionsTab() { @BasePage(4) { - @Sessions() + @Sessions(nil) } } \ No newline at end of file