| | |
| | | using NLog.Targets; |
| | | using NLog; |
| | | using ServiceStack.Messaging.Rcon; |
| | | using System.Runtime.ExceptionServices; |
| | | using System.Runtime.InteropServices; |
| | | |
| | | namespace GZ.Projects.HnSx |
| | | { |
| | |
| | | { |
| | | |
| | | } |
| | | 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) |
| | |
| | | //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; |
| | | } |
| | | } |
| | |
| | | |
| | | 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; |
| | |
| | | _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 |
| | |
| | | } |
| | | } |
| | | |
| | | public async Task SendAsync(string message) |
| | | public async Task<bool> SendAsync(string message) |
| | | { |
| | | if (_webSocket?.State != WebSocketState.Open) |
| | | { |
| | |
| | | |
| | | var bytes = System.Text.Encoding.UTF8.GetBytes(message); |
| | | await _webSocket.SendAsync(new ArraySegment<byte>(bytes), WebSocketMessageType.Text, true, _cts.Token); |
| | | |
| | | return true; |
| | | } |
| | | } |
| | | |