移除原心跳配置和业务,改为使用 WebSocket Ping Pong 实现,并增加超时逻辑

This commit is contained in:
dushixiang committed 2026-02-25 14:11:22 +08:00
1 parent 0032e42905
commit 1a64b27af6
9 files changed
+72 -66

No files matched your search

+1
View File
@@ -49,6 +49,7 @@ func NewAgentHandler(logger *zap.Logger, agentService *service.AgentService, tra
// 设置WebSocket消息处理器
wsManager.SetMessageHandler(h.handleWebSocketMessage)
wsManager.SetPongHandler(h.handleWebSocketPong)
return h
}
+7 -5
View File
@@ -77,9 +77,6 @@ func (h *AgentHandler) HandleWebSocket(c echo.Context) error {
// handleWebSocketMessage 处理WebSocket消息
func (h *AgentHandler) handleWebSocketMessage(ctx context.Context, agentID string, messageType string, data json.RawMessage) error {
switch protocol.MessageType(messageType) {
case protocol.MessageTypeHeartbeat:
return h.handleHeartbeatMessage(ctx, agentID)
case protocol.MessageTypeMetrics:
return h.handleMetricsMessage(ctx, agentID, data)
@@ -154,8 +151,13 @@ func (h *AgentHandler) newClient(agentID string, conn *websocket.Conn) *ws.Clien
}
}
func (h *AgentHandler) handleHeartbeatMessage(ctx context.Context, agentID string) error {
return h.agentService.UpdateAgentStatus(ctx, agentID, 1)
func (h *AgentHandler) handleWebSocketPong(agentID string) {
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
if err := h.agentService.UpdateAgentStatus(ctx, agentID, 1); err != nil {
h.logger.Warn("failed to update agent status on pong", zap.String("agentID", agentID), zap.Error(err))
}
}
func (h *AgentHandler) handleMetricsMessage(ctx context.Context, agentID string, data json.RawMessage) error {