From e27e0f571d0c7adfed5605d9a29d9292fe75a1f6 Mon Sep 17 00:00:00 2001 From: Branden J Brown Date: Fri, 2 Feb 2024 21:18:03 -0600 Subject: [PATCH] sync with heartbeat reader --- server.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/server.go b/server.go index d490c97..fc56fbe 100644 --- a/server.go +++ b/server.go @@ -197,7 +197,9 @@ func (s *Server) Queue(w http.ResponseWriter, r *http.Request) { func (s *Server) joinAndServe(p person) { slog.Debug("joining", "player", p.id) ctx, stop := context.WithTimeoutCause(context.Background(), 10*time.Minute, errQueueEmpty) + ch := make(chan struct{}) go func() { + defer close(ch) for { _, _, err := p.conn.Read(context.Background()) if err != nil || ctx.Err() != nil { @@ -207,6 +209,7 @@ func (s *Server) joinAndServe(p person) { }() id, chall, deal := s.l.Queue(ctx, p.id) stop() + <-ch if id == (lobby.GameID{}) { // Context canceled. p.conn.Close(websocket.StatusTryAgainLater, "sorry, queue is empty...")