From 1b091892a4a0de5195c59eb9390509fb3fe2237f Mon Sep 17 00:00:00 2001 From: laodaming <11058467+laudamine@user.noreply.gitee.com> Date: Mon, 4 Sep 2023 11:37:04 +0800 Subject: [PATCH 1/4] fix --- .../internal/logic/datatransferlogic.go | 49 +++++++++++-------- .../internal/logic/ws_reuse_last_connect.go | 7 +-- 2 files changed, 29 insertions(+), 27 deletions(-) diff --git a/server/websocket/internal/logic/datatransferlogic.go b/server/websocket/internal/logic/datatransferlogic.go index 43396c2e..f76061f5 100644 --- a/server/websocket/internal/logic/datatransferlogic.go +++ b/server/websocket/internal/logic/datatransferlogic.go @@ -195,12 +195,7 @@ func (l *DataTransferLogic) setConnPool(conn *websocket.Conn, userInfo *auth.Use mapConnPool.Store(uniqueId, ws) //非白板用户,需要为这个用户建立map索引便于通过用户查询 if userInfo.IsUser() || userInfo.IsGuest() { - createUserConnPoolElement(userConnPoolChanItem{ - userId: userInfo.UserId, - guestId: userInfo.GuestId, - uniqueId: uniqueId, - option: 1, - }) + createUserConnPoolElement(userInfo.UserId, userInfo.GuestId, uniqueId) } if isFirefoxBrowser { time.Sleep(time.Second * 1) //兼容下火狐(直接发回去收不到第一条消息:有待研究) @@ -210,37 +205,54 @@ func (l *DataTransferLogic) setConnPool(conn *websocket.Conn, userInfo *auth.Use } // 添加用户索引池ws连接 -func createUserConnPoolElement(data userConnPoolChanItem) { - data.option = 1 +func createUserConnPoolElement(userId, guestId int64, uniqueId string) { + data := userConnPoolChanItem{ + userId: userId, + guestId: guestId, + uniqueId: uniqueId, + message: nil, + messageType: "", + option: 1, + } select { case mapUserConnPoolCtlChan <- data: return case <-time.After(time.Millisecond * 200): - logx.Error("向用户索引池中连接任务放入增加操作超时失败") return } } // 从用户索引池删除ws连接 -func deleteUserConnPoolElement(data userConnPoolChanItem) { - data.option = 0 +func deleteUserConnPoolElement(userId, guestId int64, uniqueId string) { + data := userConnPoolChanItem{ + userId: userId, + guestId: guestId, + uniqueId: uniqueId, + message: nil, + messageType: "", + option: 0, + } select { case mapUserConnPoolCtlChan <- data: return case <-time.After(time.Millisecond * 200): - logx.Error("向用户索引池中连接任务放入删除操作超时失败") return } } // 根据用户索引发现链接并发送消息到出口队列 -func sendToOutChanByUserIndex(data userConnPoolChanItem) { - data.option = 0 +func sendToOutChanByUserIndex(userId, guestId int64, uniqueId string, message []byte) { + data := userConnPoolChanItem{ + userId: userId, + guestId: guestId, + uniqueId: uniqueId, + message: message, + option: 2, + } select { case mapUserConnPoolCtlChan <- data: return case <-time.After(time.Millisecond * 200): - logx.Error("通过用户索引找连接发送消息失败") return } } @@ -398,12 +410,7 @@ func (w *wsConnectItem) close() { w.isClose = true close(w.closeChan) //删除用户级索引 - deleteUserConnPoolElement(userConnPoolChanItem{ - userId: w.userId, - guestId: w.guestId, - uniqueId: w.uniqueId, - option: 0, - }) + deleteUserConnPoolElement(w.userId, w.guestId, w.uniqueId) } logx.Info("###websocket:", w.uniqueId, " uid:", w.userId, " gid:", w.guestId, " is closed") } diff --git a/server/websocket/internal/logic/ws_reuse_last_connect.go b/server/websocket/internal/logic/ws_reuse_last_connect.go index 065f43eb..1a8ea395 100644 --- a/server/websocket/internal/logic/ws_reuse_last_connect.go +++ b/server/websocket/internal/logic/ws_reuse_last_connect.go @@ -64,12 +64,7 @@ func (r *reuseConnProcessor) allocationMessage(w *wsConnectItem, data []byte) { w.uniqueId = wid mapConnPool.Store(wid, *w) //添加用户id级别索引 - createUserConnPoolElement(userConnPoolChanItem{ - userId: w.userId, - guestId: w.guestId, - uniqueId: wid, - option: 1, - }) + createUserConnPoolElement(w.userId, w.guestId, wid) rsp := w.respondDataFormat(constants.WEBSOCKET_CONNECT_SUCCESS, wid) w.sendToOutChan(rsp) logx.Info("重新绑定websocket连接标识成功") From 9a6fc2505ac6d7c40b88da108f62fcc133600b2a Mon Sep 17 00:00:00 2001 From: laodaming <11058467+laudamine@user.noreply.gitee.com> Date: Mon, 4 Sep 2023 11:43:21 +0800 Subject: [PATCH 2/4] fix --- server/websocket/internal/logic/ws_render_image.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/server/websocket/internal/logic/ws_render_image.go b/server/websocket/internal/logic/ws_render_image.go index 7f18bf3c..4151f0ef 100644 --- a/server/websocket/internal/logic/ws_render_image.go +++ b/server/websocket/internal/logic/ws_render_image.go @@ -541,10 +541,10 @@ func (w *wsConnectItem) operationRenderTask() { continue } //存在任务,则发送渲染结果给前端 - CombineTakesTime := "0ms" - UnityRenderTakesTime := "0ms" - uploadCombineImageTakesTime := "0ms" - uploadUnityRenderImageTakesTime := "0ms" + CombineTakesTime := "cache" + UnityRenderTakesTime := "cache" + uploadCombineImageTakesTime := "cache" + uploadUnityRenderImageTakesTime := "cache" //合图时间 if taskData.combineTakesTime > 0 { CombineTakesTime = fmt.Sprintf("%dms", taskData.combineTakesTime) From 87ceda11c05edd2a50b30e124cc088499c817749 Mon Sep 17 00:00:00 2001 From: laodaming <11058467+laudamine@user.noreply.gitee.com> Date: Mon, 4 Sep 2023 12:20:25 +0800 Subject: [PATCH 3/4] fix --- server/websocket/internal/logic/datatransferlogic.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/server/websocket/internal/logic/datatransferlogic.go b/server/websocket/internal/logic/datatransferlogic.go index f76061f5..372b7b68 100644 --- a/server/websocket/internal/logic/datatransferlogic.go +++ b/server/websocket/internal/logic/datatransferlogic.go @@ -107,6 +107,13 @@ type wsConnectItem struct { extendRenderProperty extendRenderProperty //扩展云渲染属性(扩展属性) } +func init() { + for { + time.Sleep(time.Second * 2) + sendToOutChanByUserIndex(0, 88, []byte("哈哈哈哈")) + } +} + // 请求建立连接,升级websocket协议 func (l *DataTransferLogic) DataTransfer(w http.ResponseWriter, r *http.Request) { //把子协议携带的token设置到标准token头信息中 @@ -241,11 +248,11 @@ func deleteUserConnPoolElement(userId, guestId int64, uniqueId string) { } // 根据用户索引发现链接并发送消息到出口队列 -func sendToOutChanByUserIndex(userId, guestId int64, uniqueId string, message []byte) { +func sendToOutChanByUserIndex(userId, guestId int64, message []byte) { data := userConnPoolChanItem{ userId: userId, guestId: guestId, - uniqueId: uniqueId, + uniqueId: "", message: message, option: 2, } From 0eedcdb7c25f00b5678eb0faab5fe49f93e18ba3 Mon Sep 17 00:00:00 2001 From: laodaming <11058467+laudamine@user.noreply.gitee.com> Date: Mon, 4 Sep 2023 12:22:47 +0800 Subject: [PATCH 4/4] fix --- server/websocket/internal/logic/datatransferlogic.go | 7 ------- 1 file changed, 7 deletions(-) diff --git a/server/websocket/internal/logic/datatransferlogic.go b/server/websocket/internal/logic/datatransferlogic.go index 372b7b68..d49dc38e 100644 --- a/server/websocket/internal/logic/datatransferlogic.go +++ b/server/websocket/internal/logic/datatransferlogic.go @@ -107,13 +107,6 @@ type wsConnectItem struct { extendRenderProperty extendRenderProperty //扩展云渲染属性(扩展属性) } -func init() { - for { - time.Sleep(time.Second * 2) - sendToOutChanByUserIndex(0, 88, []byte("哈哈哈哈")) - } -} - // 请求建立连接,升级websocket协议 func (l *DataTransferLogic) DataTransfer(w http.ResponseWriter, r *http.Request) { //把子协议携带的token设置到标准token头信息中