From 58c1a87f19a96a1d62df382a01ed0dfd36e2f84b Mon Sep 17 00:00:00 2001 From: czw <selecti@yeah.net> Date: 星期五, 04 七月 2025 16:34:53 +0800 Subject: [PATCH] 1 --- HnSx/Build/Project/代码/VS自定义类/AutoThread.cs | 77 ++++++++++++++++++++++---------------- 1 files changed, 44 insertions(+), 33 deletions(-) diff --git "a/HnSx/Build/Project/\344\273\243\347\240\201/VS\350\207\252\345\256\232\344\271\211\347\261\273/AutoThread.cs" "b/HnSx/Build/Project/\344\273\243\347\240\201/VS\350\207\252\345\256\232\344\271\211\347\261\273/AutoThread.cs" index c35ed3a..603683d 100644 --- "a/HnSx/Build/Project/\344\273\243\347\240\201/VS\350\207\252\345\256\232\344\271\211\347\261\273/AutoThread.cs" +++ "b/HnSx/Build/Project/\344\273\243\347\240\201/VS\350\207\252\345\256\232\344\271\211\347\261\273/AutoThread.cs" @@ -27,6 +27,8 @@ using NLog.Targets; using NLog; using ServiceStack.Messaging.Rcon; +using System.Runtime.ExceptionServices; +using System.Runtime.InteropServices; namespace GZ.Projects.HnSx { @@ -108,7 +110,33 @@ { } - public void TaskEverythingRun() + + public async void ThreadwebSoc() + { + List<object> list = new List<object>(); + //read Alldata from database + //灏嗘暟鎹紦瀛樺埌鍐呭瓨銆�+ try + { + Thread.Sleep(1000); + while (true) + { + if (/*list.Count > 0 && */WebSocketClientWithReconnect.GetWebSocketState() == WebSocketState.Open) + for (int i = 60000; i < 70000; i++) + { + Thread.Sleep(1000); + Console.WriteLine($"{DateTime.Now.ToString("HH:mm:ss.fff")}>>>GGG{i}"); + var b = WebSocketClientWithReconnect.Instance?.SendAsync($"He >>GGG{i}").Result; + Console.WriteLine("鍙戦�瀹屾垚锛侊紒" + b); + } + } + } + catch (Exception ex) + { + LogHelper.Error(ex.Message, ex); + } + } + public async Task TaskEverythingRun() { var host = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName()); foreach (var ip in host.AddressList) @@ -119,35 +147,8 @@ //new HttpServer(ip.ToString()).HttpServerRun(); //new TcpServer(ip.ToString()); //var server = new EnhancedWebSocketServer($"http://{ip.ToString()}:8809/").StartAsync(); - var client = new WebSocketClientWithReconnect($"ws://{ip.ToString()}:8809/socket")/*.StartAsync()*/; - //Task.Run(async () => - //{ - client.StartAsync(); - Task.Run(async () => - { - while (true) - { - for (int i = 0; i < 10000; i++) - { - Thread.Sleep(1000); - Console.WriteLine($"{DateTime.Now.ToString("HH:mm:ss.fff")}>>>Server{i}"); - await client.SendAsync($"Hello Server{i}!"); - } - } - }); - //Task.Run(async () => - //{ - // while (true) - // { - // for (int i = 60000; i < 70000; i++) - // { - // Thread.Sleep(1000); - // Console.WriteLine($"{DateTime.Now.ToString("HH:mm:ss.fff")}>>>GGG{i}"); - // await client.SendAsync($"Hello GGG{i}!"); - // } - // } - //}); - //}); + new WebSocketClientWithReconnect($"ws://{ip.ToString()}:8809/socket").StartAsync(); + break; } } @@ -470,7 +471,8 @@ public class WebSocketClientWithReconnect { - private ClientWebSocket _webSocket; + public static ClientWebSocket _webSocket; + private static WebSocketClientWithReconnect _instance; private readonly Uri _serverUri; private readonly CancellationTokenSource _cts = new CancellationTokenSource(); private readonly int _reconnectDelayMs; @@ -485,9 +487,18 @@ _serverUri = new Uri(serverUrl); _reconnectDelayMs = reconnectDelayMs; } + public static WebSocketClientWithReconnect Instance + { + get + { + return _instance; + } + } + public static WebSocketState GetWebSocketState() => _webSocket != null ? _webSocket.State : WebSocketState.Closed; public async Task StartAsync() { + _instance = this; while (!_cts.IsCancellationRequested) { try @@ -570,7 +581,7 @@ } } - public async Task SendAsync(string message) + public async Task<bool> SendAsync(string message) { if (_webSocket?.State != WebSocketState.Open) { @@ -579,7 +590,7 @@ var bytes = System.Text.Encoding.UTF8.GetBytes(message); await _webSocket.SendAsync(new ArraySegment<byte>(bytes), WebSocketMessageType.Text, true, _cts.Token); - + return true; } } -- Gitblit v1.9.1