feat: implement send ping msg when platform is web in gateway.

pull/2404/head
Monet Lee 1 year ago
parent 407a117a05
commit 557a5a3b46

@ -20,6 +20,7 @@ import (
"runtime/debug"
"sync"
"sync/atomic"
"time"
"github.com/openimsdk/open-im-server/v3/pkg/msgprocessor"
"github.com/openimsdk/protocol/constant"
@ -112,6 +113,25 @@ func (c *Client) readMessage() {
_ = c.conn.SetReadDeadline(pongWait)
c.conn.SetPingHandler(c.pingHandler)
if c.PlatformID == 5 {
go func() {
ticker := time.NewTicker(20)
defer ticker.Stop()
for {
select {
case <-ticker.C:
if err := c.writePingMsg(); err != nil {
log.ZError(c.ctx, "send Ping Message error.", err)
return
}
case <-c.ctx.Done():
return
}
}
}()
}
for {
log.ZDebug(c.ctx, "readMessage")
messageType, message, returnErr := c.conn.ReadMessage()
@ -321,6 +341,22 @@ func (c *Client) writeBinaryMsg(resp Resp) error {
return c.conn.WriteMessage(MessageBinary, encodedBuf)
}
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() {
return nil

Loading…
Cancel
Save