123456789101112131415161718192021222324252627282930313233343536373839404142 |
- package ws
- import (
- "github.com/gorilla/websocket"
- "sync"
- "time"
- )
- // Session 会话结构
- type Session struct {
- ID string
- UserID int
- Conn *websocket.Conn
- LastActive time.Time
- qaLimiter *QALimiter
- Latency *LatencyMeasurer
- CloseChan chan struct{}
- MessageChan chan []byte
- mu sync.RWMutex
- }
- // HeartbeatManager 心跳管理器
- type HeartbeatManager struct {
- interval time.Duration
- sessions sync.Map
- closeChan chan struct{}
- }
- // LatencyMeasurer 延迟测量器
- type LatencyMeasurer struct {
- measurements []time.Duration
- lastLatency time.Duration
- mu sync.Mutex
- }
- // NewHeartbeatManager 创建心跳管理器
- func NewHeartbeatManager(interval time.Duration) *HeartbeatManager {
- return &HeartbeatManager{
- interval: interval,
- closeChan: make(chan struct{}),
- }
- }
|