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