From 3e073e3d25f894fa43b800b6ee3c44a847203ddf Mon Sep 17 00:00:00 2001
From: llj <132905093+newwwwwwtree@users.noreply.github.com>
Date: 星期五, 16 一月 2026 15:33:07 +0800
Subject: [PATCH] 1

---
 WebAPI/WebSocketServer.cs |   43 ++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 38 insertions(+), 5 deletions(-)

diff --git a/WebAPI/WebSocketServer.cs b/WebAPI/WebSocketServer.cs
index 3a53802..2460a95 100644
--- a/WebAPI/WebSocketServer.cs
+++ b/WebAPI/WebSocketServer.cs
@@ -17,15 +17,19 @@
     public static class WebSocketServer
     {
         private static List<IWebSocketConnection> _connections = new List<IWebSocketConnection>();
+        // 濂楁帴瀛楄繛鎺� 涓� 鐢ㄦ埛鏍囪瘑绗� 瀛楀吀
         private static ConcurrentDictionary<IWebSocketConnection, string> _NameConnectionDict = new ConcurrentDictionary<IWebSocketConnection, string>();
+        
         private static Fleck.WebSocketServer _server;
         // 鍐呯疆瀹氭椂鍣紙鐢ㄤ簬瀹氭椂鏌ヨ鏁版嵁搴撳苟鎺ㄩ�侊級
         private static System.Timers.Timer _pushTimer;
+        // 鍐呯疆瀹氭椂鍣紙鐢ㄤ簬鍙戦�佸績璺充俊鍙凤級
+        private static System.Timers.Timer _pushTimerBeat;
         // 300000
-        private static readonly int _pushInterval = 10000;
+        private static readonly int _pushInterval = 300000; // 姣�5鍒嗛挓鍙戦�佷竴娆℃秷鎭�
 
         /// <summary>
-        /// 鍚姩 WebSocket 鏈嶅姟锛堢洃鍚� 18080 绔彛锛�
+        /// 鍚姩 WebSocket 鏈嶅姟锛堢洃鍚� 8089 绔彛锛�
         /// </summary>
         public static void Start()
         {
@@ -36,6 +40,10 @@
             _pushTimer = new System.Timers.Timer(_pushInterval);
             _pushTimer.AutoReset = false; // 闈炶嚜鍔ㄩ噸缃紝閬垮厤骞跺彂
             _pushTimer.Elapsed += OnTimerElapsed; // 缁戝畾闈欐�佷簨浠�
+
+            _pushTimerBeat = new System.Timers.Timer(30000);
+            _pushTimerBeat.AutoReset = false; // 闈炶嚜鍔ㄩ噸缃紝閬垮厤骞跺彂
+            _pushTimerBeat.Elapsed += BeatSignalSender; // 缁戝畾闈欐�佷簨浠�
 
             // 閰嶇疆 Fleck 鏈嶅姟
             _server.Start(connection =>
@@ -63,8 +71,6 @@
                 connection.OnMessage = message =>
                 {
                     Console.WriteLine($"鏀跺埌娑堟伅锛歿message}");
-                    
-                    // TODO 蹇冭烦淇″彿
                 };
 
                 // 瀹㈡埛绔柇寮�杩炴帴鏃�
@@ -97,13 +103,14 @@
         {
             _server?.Dispose();
             _pushTimer?.Stop();
+            _pushTimerBeat?.Stop();
 
             Console.WriteLine("Fleck WebSocket 鏈嶅姟宸插仠姝�");
         }
 
 
         /// <summary>
-        /// 闈欐�佸畾鏃跺櫒瑙﹀彂浜嬩欢
+        /// 闈欐�佸畾鏃跺櫒瑙﹀彂浜嬩欢 鎺ㄩ�� 鏈娑堟伅
         /// </summary>
         private static void OnTimerElapsed(object sender, System.Timers.ElapsedEventArgs e)
         {
@@ -175,5 +182,31 @@
                 }
             }
         }
+
+        // 瀹氭椂鍣ㄥ彂閫佸績璺充俊鍙�
+        private static void BeatSignalSender(object sender, System.Timers.ElapsedEventArgs e)
+        {
+            try
+            {
+                foreach (var dictOne in _NameConnectionDict)
+                {
+                    LogService.Write($@"鏈嶅姟绔� 鍚� {dictOne.Value} 鍙戦�佸績璺充俊鍙�");
+                    dictOne.Key.SendPing(new byte[0]);
+                }
+            }
+            catch (Exception ex)
+            {
+                LogService.Write(ex.ToString());
+                return;
+            }
+            finally
+            {
+                // 闈欐�佸畾鏃跺櫒鎵嬪姩閲嶅惎
+                if (_pushTimer != null && !_pushTimer.Enabled)
+                {
+                    _pushTimer.Start();
+                }
+            }
+        }
     }
 }
\ No newline at end of file

--
Gitblit v1.9.1