|
|
@@ -0,0 +1,41 @@
|
|
|
+package middleware
|
|
|
+
|
|
|
+import (
|
|
|
+ "sync/atomic"
|
|
|
+
|
|
|
+ "github.com/gin-gonic/gin"
|
|
|
+)
|
|
|
+
|
|
|
+// HTTPStats 存储HTTP统计信息
|
|
|
+type HTTPStats struct {
|
|
|
+ activeConnections int64
|
|
|
+}
|
|
|
+
|
|
|
+var globalStats = &HTTPStats{}
|
|
|
+
|
|
|
+// StatsMiddleware 统计中间件
|
|
|
+func StatsMiddleware() gin.HandlerFunc {
|
|
|
+ return func(c *gin.Context) {
|
|
|
+ // 增加活跃连接数
|
|
|
+ atomic.AddInt64(&globalStats.activeConnections, 1)
|
|
|
+
|
|
|
+ // 确保在请求结束时减少连接数
|
|
|
+ defer func() {
|
|
|
+ atomic.AddInt64(&globalStats.activeConnections, -1)
|
|
|
+ }()
|
|
|
+
|
|
|
+ c.Next()
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// StatsInfo 统计信息结构
|
|
|
+type StatsInfo struct {
|
|
|
+ ActiveConnections int64 `json:"active_connections"`
|
|
|
+}
|
|
|
+
|
|
|
+// GetStats 获取统计信息
|
|
|
+func GetStats() StatsInfo {
|
|
|
+ return StatsInfo{
|
|
|
+ ActiveConnections: atomic.LoadInt64(&globalStats.activeConnections),
|
|
|
+ }
|
|
|
+}
|