package handlers import ( "net/http" "nhooyr.io/websocket" "nhooyr.io/websocket/wsjson" ) type WSHandler struct{} func NewWSHandler() *WSHandler { return &WSHandler{} } func (h *WSHandler) Hub(w http.ResponseWriter, r *http.Request) { conn, err := websocket.Accept(w, r, &websocket.AcceptOptions{ OriginPatterns: []string{"localhost:*"}, }) if err != nil { return } defer conn.CloseNow() ctx := r.Context() for { var msg map[string]any if err := wsjson.Read(ctx, conn, &msg); err != nil { break } if err := wsjson.Write(ctx, conn, msg); err != nil { break } } }