package ws import ( "context" "log" "net/http" "time" "github.com/coder/websocket" ) func Handler(ctx context.Context, h *Hub) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { conn, err := websocket.Accept(w, r, &websocket.AcceptOptions{ OriginPatterns: []string{"*"}, }) log.Println("New WebSocket connection from", r.RemoteAddr, "at", time.Now().Format(time.RFC3339)) if err != nil { log.Println("WebSocket accept error:", err) return } c := NewClient(r.RemoteAddr, conn, h, ctx) log.Println("Client", r.RemoteAddr, "connected.") go c.ReadLoop() go c.WriteLoop() go heartbeat(c) } }