From 94a503f95d1e0a3ecbb09ec92a0879578949390a Mon Sep 17 00:00:00 2001 From: laodaming <11058467+laudamine@user.noreply.gitee.com> Date: Fri, 20 Oct 2023 12:31:58 +0800 Subject: [PATCH] fix --- .../internal/logic/ws_connect_statistics.go | 46 ---------- .../websocket/internal/logic/ws_statistics.go | 86 +++++++++++++++++++ server/websocket/websocket.go | 2 +- 3 files changed, 87 insertions(+), 47 deletions(-) delete mode 100644 server/websocket/internal/logic/ws_connect_statistics.go create mode 100644 server/websocket/internal/logic/ws_statistics.go diff --git a/server/websocket/internal/logic/ws_connect_statistics.go b/server/websocket/internal/logic/ws_connect_statistics.go deleted file mode 100644 index 226d1550..00000000 --- a/server/websocket/internal/logic/ws_connect_statistics.go +++ /dev/null @@ -1,46 +0,0 @@ -package logic - -import ( - "context" - "github.com/zeromicro/go-zero/core/logx" -) - -var ( - //当前ws连接数 - currentWebsocketConnectCount = 0 - //添加or减少连接的控制chan - websocketConnectCountCtlChan = make(chan int, 20) -) - -// 累增计数 -func increaseWebsocketConnectCount() { - websocketConnectCountCtlChan <- 1 -} - -// 减少计数 -func decreaseWebsocketConnectCount() { - websocketConnectCountCtlChan <- -1 -} - -// 消费数据 -func ConsumeWebsocketConnectCountCtlChanData(ctx context.Context) { - defer func() { - if err := recover(); err != nil { - logx.Error("ConsumeWebsocketConnectCountCtlChanData panic:", err) - } - }() - go func() { - select { - case <-ctx.Done(): - panic("ConsumeWebsocketConnectCountCtlChanData ctx deadline") - } - }() - var num int - for { - select { - case num = <-websocketConnectCountCtlChan: - currentWebsocketConnectCount += num - //logx.Info("当前websocket连接总数:", currentWebsocketConnectCount) - } - } -} diff --git a/server/websocket/internal/logic/ws_statistics.go b/server/websocket/internal/logic/ws_statistics.go new file mode 100644 index 00000000..88f1e32d --- /dev/null +++ b/server/websocket/internal/logic/ws_statistics.go @@ -0,0 +1,86 @@ +package logic + +import ( + "context" + "github.com/zeromicro/go-zero/core/logx" +) + +// 统计信息 +var ( + //当前ws连接数 + currentWebsocketConnectCount = 0 + //当前合图进行的请求总数 + currentRequestCombineApiCount = 0 + //添加or减少连接的控制chan + websocketStat = make(chan websocketStatItem, 20) +) + +type websocketStatType string + +const ( + TYPE_CONNECT_COUNT websocketStatType = "connect_count" //ws连接数 + TYPE_COMBINE_IMAGE_REQUEST_COUNT websocketStatType = "combine_count" +) + +type websocketStatItem struct { + Type websocketStatType `json:"type"` //类型 + Value int `json:"value"` //数值 +} + +// 累增ws连接数计数 +func increaseWebsocketConnectCount() { + websocketStat <- websocketStatItem{ + Type: TYPE_CONNECT_COUNT, + Value: 1, + } +} + +// 减少ws连接数计数 +func decreaseWebsocketConnectCount() { + websocketStat <- websocketStatItem{ + Type: TYPE_CONNECT_COUNT, + Value: -1, + } +} + +// 累增合图请求数计数 +func increaseCombineRequestCount() { + websocketStat <- websocketStatItem{ + Type: TYPE_COMBINE_IMAGE_REQUEST_COUNT, + Value: 1, + } +} + +// 减少合图请求数计数 +func decreaseCombineRequestCount() { + websocketStat <- websocketStatItem{ + Type: TYPE_COMBINE_IMAGE_REQUEST_COUNT, + Value: -1, + } +} + +// 消费数据 +func ConsumeWebsocketStatData(ctx context.Context) { + defer func() { + if err := recover(); err != nil { + logx.Error("ConsumeWebsocketStatData panic:", err) + } + }() + go func() { + select { + case <-ctx.Done(): + panic("ConsumeWebsocketStatData ctx deadline") + } + }() + for { + select { + case data := <-websocketStat: + switch data.Type { + case TYPE_CONNECT_COUNT: //ws连接计数 + currentWebsocketConnectCount += data.Value + case TYPE_COMBINE_IMAGE_REQUEST_COUNT: //请求算法合图计数 + currentRequestCombineApiCount += data.Value + } + } + } +} diff --git a/server/websocket/websocket.go b/server/websocket/websocket.go index afd6a3b1..34673a22 100644 --- a/server/websocket/websocket.go +++ b/server/websocket/websocket.go @@ -38,7 +38,7 @@ func main() { //消费用户索引创建/删除/发送消息中的任务数据 go logic.ConsumeUserConnPoolCtlChanData(ctx1) //消费连接统计信息 - go logic.ConsumeWebsocketConnectCountCtlChanData(ctx1) + go logic.ConsumeWebsocketStatData(ctx1) fmt.Printf("Starting server at %s:%d...\n", c.Host, c.Port) server.Start() }