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