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"