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