From a58cccfff6734b5e2780984aeb02bff591391ef1 Mon Sep 17 00:00:00 2001 From: laodaming <11058467+laudamine@user.noreply.gitee.com> Date: Fri, 20 Oct 2023 14:10:03 +0800 Subject: [PATCH 1/3] fix --- constants/websocket.go | 3 +++ server/websocket/internal/logic/datatransferlogic.go | 5 ++++- utils/websocket_data/base_data.go | 6 ++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/constants/websocket.go b/constants/websocket.go index 4fd14ff5..ce802d68 100644 --- a/constants/websocket.go +++ b/constants/websocket.go @@ -9,6 +9,9 @@ const ( WEBSOCKET_CONNECT_SUCCESS Websocket = "WEBSOCKET_CONNECT_SUCCESS" //ws连接成功 (1级消息,单向通信) ) +// 心跳 +const WEBSOCKET_HEARTBEAT Websocket = "WEBSOCKET_HEARTBEAT" + // websocket消息类型(通用通知类别) const ( WEBSOCKET_COMMON_NOTIFY Websocket = "WEBSOCKET_COMMON_NOTIFY" //通用回调通知(1级消息,单向通信) diff --git a/server/websocket/internal/logic/datatransferlogic.go b/server/websocket/internal/logic/datatransferlogic.go index 7a11444b..e7a52f30 100644 --- a/server/websocket/internal/logic/datatransferlogic.go +++ b/server/websocket/internal/logic/datatransferlogic.go @@ -322,7 +322,10 @@ func (w *wsConnectItem) heartbeat() { w.debug = nil } //发送心跳信息 - if err := w.conn.WriteMessage(websocket.PongMessage, nil); err != nil { + if err := w.conn.WriteMessage(websocket.PongMessage, w.respondDataFormat(constants.WEBSOCKET_HEARTBEAT, websocket_data.HeartBeatMsg{ + WsCount: currentWebsocketConnectCount, + CombineCount: currentRequestCombineApiCount, + })); err != nil { logx.Error("发送心跳信息异常,关闭连接:", w.uniqueId, err) w.close() return diff --git a/utils/websocket_data/base_data.go b/utils/websocket_data/base_data.go index d9d4476d..69f8c33f 100644 --- a/utils/websocket_data/base_data.go +++ b/utils/websocket_data/base_data.go @@ -23,3 +23,9 @@ type ConnectErrMsg struct { type ConnectUnAuth struct { Message string `json:"message"` } + +// 心跳数据 +type HeartBeatMsg struct { + WsCount int `json:"ws_count"` + CombineCount int `json:"combine_count"` +} From 4c501317613af34645a9641b3da72577e583d07a Mon Sep 17 00:00:00 2001 From: laodaming <11058467+laudamine@user.noreply.gitee.com> Date: Fri, 20 Oct 2023 14:12:29 +0800 Subject: [PATCH 2/3] fix --- server/websocket/internal/logic/datatransferlogic.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/server/websocket/internal/logic/datatransferlogic.go b/server/websocket/internal/logic/datatransferlogic.go index e7a52f30..827717f8 100644 --- a/server/websocket/internal/logic/datatransferlogic.go +++ b/server/websocket/internal/logic/datatransferlogic.go @@ -322,10 +322,14 @@ func (w *wsConnectItem) heartbeat() { w.debug = nil } //发送心跳信息 - if err := w.conn.WriteMessage(websocket.PongMessage, w.respondDataFormat(constants.WEBSOCKET_HEARTBEAT, websocket_data.HeartBeatMsg{ - WsCount: currentWebsocketConnectCount, - CombineCount: currentRequestCombineApiCount, - })); err != nil { + var d interface{} + if w.debug != nil { + d = websocket_data.HeartBeatMsg{ + WsCount: currentWebsocketConnectCount, + CombineCount: currentRequestCombineApiCount, + } + } + if err := w.conn.WriteMessage(websocket.PongMessage, w.respondDataFormat(constants.WEBSOCKET_HEARTBEAT, d)); err != nil { logx.Error("发送心跳信息异常,关闭连接:", w.uniqueId, err) w.close() return From 962948afdb2e65cd3503f7206b5a3806caf88dc0 Mon Sep 17 00:00:00 2001 From: laodaming <11058467+laudamine@user.noreply.gitee.com> Date: Fri, 20 Oct 2023 14:22:08 +0800 Subject: [PATCH 3/3] fix --- server/websocket/internal/logic/ws_render_image.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/websocket/internal/logic/ws_render_image.go b/server/websocket/internal/logic/ws_render_image.go index a64b254e..00440573 100644 --- a/server/websocket/internal/logic/ws_render_image.go +++ b/server/websocket/internal/logic/ws_render_image.go @@ -111,11 +111,11 @@ func (w *wsConnectItem) consumeRenderImageData() { } limitChan <- struct{}{} go func(d websocket_data.RenderImageReqMsg) { - defer func() { + /* defer func() { if err := recover(); err != nil { logx.Error("func renderImage main panic:", err) } - }() + }()*/ //临时chan用select io多路复用去判断携程退出 tmpChan := make(chan struct{}, 1) defer close(tmpChan)