nfsense/pkg/server/websocket.go

34 lines
696 B
Go

package server
import (
"context"
"net/http"
"time"
"golang.org/x/exp/slog"
"nhooyr.io/websocket"
"nhooyr.io/websocket/wsjson"
)
func HandleWebsocketAPI(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, "")
}