| 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), | |
| } | |
| } | |