From 47b757769a0e5bace28cdb99b0defcab9677800e Mon Sep 17 00:00:00 2001 From: trafficlunar Date: Wed, 27 Nov 2024 21:00:16 +0000 Subject: [PATCH] feat: add basic websocket --- internal/handler/computer.go | 35 +++++++++++++++++++++++++++++++++++ internal/server/router.go | 3 +++ 2 files changed, 38 insertions(+) create mode 100644 internal/handler/computer.go diff --git a/internal/handler/computer.go b/internal/handler/computer.go new file mode 100644 index 0000000..186c99f --- /dev/null +++ b/internal/handler/computer.go @@ -0,0 +1,35 @@ +package handler + +import ( + "log/slog" + "net/http" + + "github.com/gorilla/websocket" +) + +var upgrader = websocket.Upgrader{ + CheckOrigin: func(r *http.Request) bool { + // todo: change for security + return true + }, +} + +func HandleComputerWebsocket(w http.ResponseWriter, r *http.Request) { + connection, err := upgrader.Upgrade(w, r, nil) + if err != nil { + slog.Error("Error when upgrading websocket connection", slog.Any("error", err)) + return + } + defer connection.Close() + + slog.Info("Websocket connection established!") + + for { + _, message, err := connection.ReadMessage() + if err != nil { + slog.Error("Error reading WebSocket message", slog.Any("error", err)) + break + } + slog.Info("Recieved message", slog.Any("message", message)) + } +} diff --git a/internal/server/router.go b/internal/server/router.go index 66710a9..5d8a936 100644 --- a/internal/server/router.go +++ b/internal/server/router.go @@ -38,9 +38,12 @@ func NewRouter() { r.Get("/visit-counter", handler.HandleGetVisitCounter) r.With(httprate.LimitByRealIP(1, time.Hour)).Patch("/visit-counter", handler.HandlePatchVisitCounter) + r.Get("/currently-playing", handler.HandleGetCurrentlyPlaying) r.Get("/status", handler.HandleGetStatus) + r.Get("/ws/computer", handler.HandleComputerWebsocket) + port := os.Getenv("PORT") if len(port) == 0 { port = "8080"