mirror of
				https://github.com/openimsdk/open-im-server.git
				synced 2025-11-04 11:22:10 +08:00 
			
		
		
		
	feat: implement send ping msg when platform is web in gateway.
This commit is contained in:
		
							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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user