包含Go API项目的所有源代码、配置文件、Docker配置、文档和前端资源 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
41 lines
795 B
Go
41 lines
795 B
Go
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),
|
|
}
|
|
} |