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" "runtime/debug"
"sync" "sync"
"sync/atomic" "sync/atomic"
"time"
"github.com/openimsdk/open-im-server/v3/pkg/msgprocessor" "github.com/openimsdk/open-im-server/v3/pkg/msgprocessor"
"github.com/openimsdk/protocol/constant" "github.com/openimsdk/protocol/constant"
@ -112,6 +113,25 @@ func (c *Client) readMessage() {
_ = c.conn.SetReadDeadline(pongWait) _ = c.conn.SetReadDeadline(pongWait)
c.conn.SetPingHandler(c.pingHandler) 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 { for {
log.ZDebug(c.ctx, "readMessage") log.ZDebug(c.ctx, "readMessage")
messageType, message, returnErr := c.conn.ReadMessage() messageType, message, returnErr := c.conn.ReadMessage()
@ -321,6 +341,22 @@ func (c *Client) writeBinaryMsg(resp Resp) error {
return c.conn.WriteMessage(MessageBinary, encodedBuf) 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 { func (c *Client) writePongMsg() error {
if c.closed.Load() { if c.closed.Load() {
return nil return nil

Loading…
Cancel
Save