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