mirror of
				https://github.com/openimsdk/open-im-server.git
				synced 2025-11-04 19:32:17 +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"
 | 
						"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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user