diff --git a/gateway/gateway.go b/gateway/gateway.go index a1e134f..79df16e 100644 --- a/gateway/gateway.go +++ b/gateway/gateway.go @@ -173,6 +173,10 @@ func (g *Gateway) Close() error { WSDebug("Stopped pacemaker.") } + WSDebug("Closing the websocket.") + err := g.WS.Close() + g.AfterClose(err) + WSDebug("Waiting for WaitGroup to be done.") // This should work, since Pacemaker should signal its loop to stop, which @@ -182,10 +186,8 @@ func (g *Gateway) Close() error { // Mark g.waitGroup as empty: g.waitGroup = nil - WSDebug("WaitGroup is done. Closing the websocket.") + WSDebug("WaitGroup is done.") - err := g.WS.Close() - g.AfterClose(err) return err } @@ -335,6 +337,7 @@ func (g *Gateway) start() error { func (g *Gateway) handleWS() { err := g.eventLoop() g.waitGroup.Done() + WSDebug("Event loop stopped.") if err != nil { g.ErrorLog(err) diff --git a/gateway/pacemaker.go b/gateway/pacemaker.go index 79eb9b9..494cb7d 100644 --- a/gateway/pacemaker.go +++ b/gateway/pacemaker.go @@ -75,10 +75,14 @@ func (p *Pacemaker) start() error { p.Echo() for { + WSDebug("Pacemaker loop restarted.") + if err := p.Pace(); err != nil { return err } + WSDebug("Paced.") + // Paced, save: atomic.StoreInt64(&p.SentBeat, time.Now().UnixNano()) @@ -88,9 +92,11 @@ func (p *Pacemaker) start() error { select { case <-p.stop: + WSDebug("Received stop signal.") return nil case <-tick.C: + WSDebug("Ticked. Restarting.") } } }