1
czw
2025-07-04 58c1a87f19a96a1d62df382a01ed0dfd36e2f84b
HnSx/Build/Project/´úÂë/VS×Ô¶¨ÒåÀà/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;
        }
    }