From 693d89522cedb690289a1b0b1066c0e6e08d5c0e Mon Sep 17 00:00:00 2001 From: mzhifa Date: Wed, 5 Jul 2023 22:41:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=92=89=E9=92=89=E5=8F=91?= =?UTF-8?q?=E9=80=81=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- StartServerWPF.Modules.Main/RemoteDataBase.cs | 5 ++ .../ViewModels/MainViewModel.cs | 12 ++-- .../WebsocketClient.cs | 60 ++++++++++++------- StartServerWPF/SystemConfig.json | 4 +- 4 files changed, 54 insertions(+), 27 deletions(-) diff --git a/StartServerWPF.Modules.Main/RemoteDataBase.cs b/StartServerWPF.Modules.Main/RemoteDataBase.cs index 452d2b5..a4d5e2f 100644 --- a/StartServerWPF.Modules.Main/RemoteDataBase.cs +++ b/StartServerWPF.Modules.Main/RemoteDataBase.cs @@ -15,5 +15,10 @@ namespace StartServerWPF.Modules.Main public string DataBase { get; set; } public string TableName { get; set; } public string WebsocketUrl { get; set; } + + public string Account { get; set; } + public string Pwd { get; set; } } + + } diff --git a/StartServerWPF.Modules.Main/ViewModels/MainViewModel.cs b/StartServerWPF.Modules.Main/ViewModels/MainViewModel.cs index 125ee29..0364b54 100644 --- a/StartServerWPF.Modules.Main/ViewModels/MainViewModel.cs +++ b/StartServerWPF.Modules.Main/ViewModels/MainViewModel.cs @@ -24,6 +24,7 @@ using System.Text.Json.Serialization; using System.Text.Json; using System.Text.Encodings.Web; using System.Text.Unicode; +using System.Security.Principal; namespace StartServerWPF.Modules.Main.ViewModels { @@ -54,6 +55,7 @@ namespace StartServerWPF.Modules.Main.ViewModels this._websocket = websocket; _websocket.WebSocketInit(sc.remoteDb.WebsocketUrl); CurrentItemsList = ApmsProcessSliceList; + _websocket.SiginServer(sc.remoteDb.Account,sc.remoteDb.Pwd); } @@ -252,7 +254,7 @@ namespace StartServerWPF.Modules.Main.ViewModels //WriteSerLog(sc.vpnInfo.SystemLogPath + JsonParser.systemLogFileName, logStr); OneKeyStop(); } - + private void ConnectVPN() { vpn.CreateOrUpdateVPN(sc.vpnInfo.VpnName, sc.vpnInfo.VpnIP); @@ -336,7 +338,7 @@ namespace StartServerWPF.Modules.Main.ViewModels // btnSetParams.Enabled = false; timer1.Interval = TimeSpan.FromSeconds(ProMonInterval); timer1.Start(); - timer1.Tick += timer1_Tick; + ReciveDataSource.Clear(); } @@ -453,6 +455,7 @@ namespace StartServerWPF.Modules.Main.ViewModels public void InitializeParams() { timer1.Interval = TimeSpan.FromSeconds(ProMonInterval); + timer1.Tick += timer1_Tick; this.Message = "服务器版本:" + JsonParser.serverVision; IntervalTimesSource.Add(5); IntervalTimesSource.Add(10); @@ -674,11 +677,10 @@ namespace StartServerWPF.Modules.Main.ViewModels string logStr = DateTime.Now.ToString("s") + "\t服务器程序" + pro.ProName + "重启"; WriteSerLog(sc.vpnInfo.SystemLogPath + JsonParser.systemLogFileName, logStr); - string jsonStr= JsonSerializer.Serialize(new CSDeviceWebhook + string jsonStr= JsonSerializer.Serialize(new CSDeviceWebhook { type= CSMessage.webhook, message=logStr, - }, new JsonSerializerOptions { // 整齐打印 @@ -761,7 +763,7 @@ namespace StartServerWPF.Modules.Main.ViewModels string logStr = DateTime.Now.ToString("s") + "\tVPN断开,重连"; WriteSerLog(sc.vpnInfo.SystemLogPath + JsonParser.systemLogFileName, logStr); - string jsonStr = JsonSerializer.Serialize(new CSDeviceWebhook + string jsonStr = JsonSerializer.Serialize(new CSDeviceWebhook { type = CSMessage.webhook, message = logStr, diff --git a/StartServerWPF.Modules.Main/WebsocketClient.cs b/StartServerWPF.Modules.Main/WebsocketClient.cs index e89f173..913d08c 100644 --- a/StartServerWPF.Modules.Main/WebsocketClient.cs +++ b/StartServerWPF.Modules.Main/WebsocketClient.cs @@ -1,9 +1,11 @@ -using SuperSocket.ClientEngine; +using StartServerWPF.Modules.Main.Model; +using SuperSocket.ClientEngine; using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; +using System.Text.Json; using System.Threading; using System.Threading.Tasks; using WebSocket4Net; @@ -13,59 +15,75 @@ namespace StartServerWPF.Modules.Main public class WebsocketClient { public WebSocket webSocket4Net = null; + + public Action WebsocketError; + public Action WebSocketMessageReceived; public void WebSocketInit(string url) { - Console.WriteLine("客户端"); + Debug.WriteLine("客户端"); webSocket4Net = new WebSocket(url); webSocket4Net.Opened += WebSocket4Net_Opened; webSocket4Net.Error += new EventHandler(WebSocket_Error); webSocket4Net.MessageReceived += WebSocket4Net_MessageReceived; webSocket4Net.Open(); - Console.WriteLine("客户端连接成功!"); - Thread thread = new Thread(ClientSendHeartbeat); - thread.IsBackground = true; - thread.Start(); - // webSocket4Net.Dispose(); + Debug.WriteLine("客户端连接成功!"); + + // thread.Start(); } - public void SendMes(string str) + public void SiginServer(string account,string password) { - if (webSocket4Net.State == WebSocketState.Open) - { - webSocket4Net.Send(str); - } + isHeartbeat = false; + + string jsonstr= JsonSerializer.Serialize(new CSUserSigin { type = CSMessage.sigin, utype = "device", account=account,password=password}); + SendMes(jsonstr); + Task.Run(async () =>{ + await Task.Delay(2000); + isHeartbeat = true; + SendHeartbeat(); + }); + } + + public void Closed() + { + isHeartbeat = false; } + public void SendMes(string message) + { + webSocket4Net.Send(message); + } - private void ClientSendHeartbeat() + bool isHeartbeat = false; + private void SendHeartbeat() { - int i = 88; - while (true) + while (isHeartbeat) { //Console.WriteLine($"客户端发送数据{i++}"); - Thread.Sleep(TimeSpan.FromSeconds(2)); if (webSocket4Net.State == WebSocketState.Open) { - webSocket4Net.Send("{\"type\":\"heartbeat\",\"utype\":\"device\",\"uid\":123}"); + webSocket4Net.Send("{\"type\":\"heartbeat\",\"utype\":\"device\"}"); } else if (webSocket4Net.State == WebSocketState.Closed) { - Thread.Sleep(TimeSpan.FromSeconds(5)); + Thread.Sleep(TimeSpan.FromSeconds(10)); webSocket4Net.Open(); } + Thread.Sleep(TimeSpan.FromSeconds(5)); } } private void WebSocket4Net_MessageReceived(object sender, MessageReceivedEventArgs e) { - Debug.WriteLine($"服务端回复数据:{e.Message}!"); + WebSocketMessageReceived?.Invoke(e.Message); } - private void WebSocket4Net_Opened(object sender, EventArgs e) + private void WebSocket4Net_Opened(object sender, EventArgs e) { - // webSocket4Net.Send($"客户端准备发送数据!"); + } void WebSocket_Error(object sender, ErrorEventArgs e) { + WebsocketError?.Invoke(e); Debug.WriteLine("websocket_Error:" + e.Exception.ToString()); } } diff --git a/StartServerWPF/SystemConfig.json b/StartServerWPF/SystemConfig.json index c5a02e1..4eb6e37 100644 --- a/StartServerWPF/SystemConfig.json +++ b/StartServerWPF/SystemConfig.json @@ -6,7 +6,9 @@ "Password": "txgy1929", "DataBase": "txgymeisdb", "TableName": "event", - "WebsocketUrl": "ws://43.138.12.228/ws" + "WebsocketUrl": "ws://43.138.12.228/ws", + "Account": "upclient", + "Pwd": "zgbj0010" }, "vpnInfo": { "VpnName": "YUWU-VPN-BySM",