diff --git a/cmd/server/ws.go b/cmd/server/ws.go index c5aa93a..372e7d1 100644 --- a/cmd/server/ws.go +++ b/cmd/server/ws.go @@ -18,21 +18,21 @@ func isWS(r *http.Request) bool { } func (s *S) serveWS(w http.ResponseWriter, r *http.Request) error { + ctx, can := context.WithCancel(r.Context()) + defer can() + c, err := websocket.Accept(w, r, nil) if err != nil { return err } defer c.CloseNow() - ugs, err := NewUserGameServer(r.Context(), s.Session(r.Context()), s.games) + ugs, err := NewUserGameServer(ctx, s.Session(ctx), s.games) if err != nil { return err } game := ugs.ID - ctx, can := context.WithCancel(r.Context()) - defer can() - go ugs.Listen(ctx, can, func(ctx context.Context) ([]byte, error) { _, b, err := c.Read(ctx) return b, err