From b454aacd362927ee90e373fcf512b62e54230057 Mon Sep 17 00:00:00 2001 From: Monet Lee Date: Wed, 10 Jul 2024 11:40:46 +0800 Subject: [PATCH] update writePingMsg logic --- internal/msggateway/client.go | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/internal/msggateway/client.go b/internal/msggateway/client.go index 96c5dc896..bb64ef567 100644 --- a/internal/msggateway/client.go +++ b/internal/msggateway/client.go @@ -347,7 +347,7 @@ func (c *Client) activeHeartbeat(ctx context.Context) { for { select { case <-ticker.C: - if err := c.conn.WriteMessage(PingMessage, nil); err != nil { + if err := c.writePingMsg(); err != nil { log.ZError(c.ctx, "send Ping Message error.", err) return } @@ -358,6 +358,21 @@ func (c *Client) activeHeartbeat(ctx context.Context) { }() } } +func (c *Client) writePingMsg() error { + if c.closed.Load() { + return nil + } + + c.w.Lock() + defer c.w.Unlock() + + err := c.conn.SetWriteDeadline(writeWait) + if err != nil { + return err + } + + return c.conn.WriteMessage(PingMessage, nil) +} func (c *Client) writePongMsg() error { if c.closed.Load() {