Setup Websocket and Routing

This commit is contained in:
Samuel Lorch 2023-03-02 23:25:17 +01:00
parent 0232a5c4f4
commit a3746e6082
7 changed files with 138 additions and 0 deletions

7
pkg/server/api.go Normal file
View file

@ -0,0 +1,7 @@
package server
import "net/http"
func HandleAPI(w http.ResponseWriter, r *http.Request) {
}

View file

@ -12,9 +12,20 @@ import (
)
var server http.Server
var mux = http.NewServeMux()
func StartWebserver(conf *definitions.Config) {
server.Addr = ":8080"
server.Handler = mux
// Routing
mux.HandleFunc("/login", HandleLogin)
mux.HandleFunc("/logout", HandleLogout)
mux.HandleFunc("/session", HandleSession)
mux.HandleFunc("/api", HandleAPI)
mux.HandleFunc("/ws", HandleWebsocketConnection)
mux.HandleFunc("/", HandleWebinterface)
go func() {
if err := server.ListenAndServe(); !errors.Is(err, http.ErrServerClosed) {
slog.Error("Webserver error", err)

15
pkg/server/session.go Normal file
View file

@ -0,0 +1,15 @@
package server
import "net/http"
func HandleLogin(w http.ResponseWriter, r *http.Request) {
}
func HandleLogout(w http.ResponseWriter, r *http.Request) {
}
func HandleSession(w http.ResponseWriter, r *http.Request) {
}

View file

@ -0,0 +1,9 @@
package server
import (
"net/http"
)
func HandleWebinterface(w http.ResponseWriter, r *http.Request) {
}

34
pkg/server/websocket.go Normal file
View file

@ -0,0 +1,34 @@
package server
import (
"context"
"net/http"
"time"
"golang.org/x/exp/slog"
"nhooyr.io/websocket"
"nhooyr.io/websocket/wsjson"
)
func HandleWebsocketConnection(w http.ResponseWriter, r *http.Request) {
c, err := websocket.Accept(w, r, nil)
if err != nil {
slog.Error("Accepting Websocket Connection", err)
return
}
defer c.Close(websocket.StatusInternalError, "Unexpected Closing")
ctx, cancel := context.WithTimeout(r.Context(), time.Second*10)
defer cancel()
var v interface{}
err = wsjson.Read(ctx, c, &v)
if err != nil {
slog.Error("Reading Websocket Message", err)
return
}
slog.Info("received websocket msg", "msg", v)
c.Close(websocket.StatusNormalClosure, "")
}