From dfdd8cdf313daee1fbe338f386c2e318410a5c4d Mon Sep 17 00:00:00 2001 From: root <295172551@qq.com> Date: Sat, 26 Jul 2025 21:51:01 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=BF=83=E8=B7=B3=E5=8F=91?= =?UTF-8?q?=E9=80=81=E9=80=BB=E8=BE=91=EF=BC=8C=E9=81=BF=E5=85=8D=E4=B8=8E?= =?UTF-8?q?=E4=B8=9A=E5=8A=A1=E6=B6=88=E6=81=AF=E7=AB=9E=E4=BA=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改 HeartbeatLoopAsync 方法,只在没有待发送消息时才发送心跳 - 使用 _channelManager.SendChannel.Count 检查发送通道状态 - 添加详细日志记录,便于生产环境监控 - 避免心跳消息与业务消息竞争发送通道,提高性能" --- .../Services/WebSocketTransport.cs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/CoreAgent.WebSocketTransport/Services/WebSocketTransport.cs b/CoreAgent.WebSocketTransport/Services/WebSocketTransport.cs index eb498c2..e33eff3 100644 --- a/CoreAgent.WebSocketTransport/Services/WebSocketTransport.cs +++ b/CoreAgent.WebSocketTransport/Services/WebSocketTransport.cs @@ -286,8 +286,20 @@ public class WebSocketTransport : IWebSocketTransport { if (_isConnected && _connection.IsConnected) { - _channelManager.PriorityChannel.TryWrite(new HeartbeatMessage()); - UpdateHeartbeat(); + // 检查发送通道是否有待发送的消息 + var hasPendingMessages = _channelManager.SendChannel.Count > 0; + + if (!hasPendingMessages) + { + _channelManager.PriorityChannel.TryWrite(new HeartbeatMessage()); + UpdateHeartbeat(); + _logger.LogTrace("发送心跳消息"); + } + else + { + _logger.LogTrace("有待发送消息 ({MessageCount} 条),跳过心跳发送", + _channelManager.SendChannel.Count); + } } await Task.Delay(TimeSpan.FromSeconds(120), cancellationToken); }