From c355549c8d7c3be9ba94154f31da944368323afb Mon Sep 17 00:00:00 2001 From: wdvxdr Date: Wed, 11 Aug 2021 22:39:58 +0800 Subject: [PATCH] fix(server): ws reverse reconnect. --- server/websocket.go | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/server/websocket.go b/server/websocket.go index b49ba29..af3c47f 100644 --- a/server/websocket.go +++ b/server/websocket.go @@ -160,7 +160,12 @@ func (c *websocketClient) connectEvent() { } log.Infof("已连接到反向WebSocket Event服务器 %v", c.conf.Event) - c.eventConn = &webSocketConn{Conn: conn, apiCaller: newAPICaller(c.bot)} + if c.eventConn == nil { + wrappedConn := &webSocketConn{Conn: conn, apiCaller: newAPICaller(c.bot)} + c.eventConn = wrappedConn + } else { + c.eventConn.Conn = conn + } } func (c *websocketClient) connectUniversal() { @@ -189,12 +194,16 @@ func (c *websocketClient) connectUniversal() { log.Warnf("反向WebSocket 握手时出现错误: %v", err) } - wrappedConn := &webSocketConn{Conn: conn, apiCaller: newAPICaller(c.bot)} - if c.conf.RateLimit.Enabled { - wrappedConn.apiCaller.use(rateLimit(c.conf.RateLimit.Frequency, c.conf.RateLimit.Bucket)) + if c.universalConn == nil { + wrappedConn := &webSocketConn{Conn: conn, apiCaller: newAPICaller(c.bot)} + if c.conf.RateLimit.Enabled { + wrappedConn.apiCaller.use(rateLimit(c.conf.RateLimit.Frequency, c.conf.RateLimit.Bucket)) + } + c.universalConn = wrappedConn + } else { + c.universalConn.Conn = conn } - go c.listenAPI(wrappedConn, true) - c.universalConn = wrappedConn + go c.listenAPI(c.universalConn, true) } func (c *websocketClient) listenAPI(conn *webSocketConn, u bool) {