diff --git a/StartServerWPF.Modules.Main/StartServerWPF.Modules.Main.csproj b/StartServerWPF.Modules.Main/StartServerWPF.Modules.Main.csproj index db00ac0..7f89eba 100644 --- a/StartServerWPF.Modules.Main/StartServerWPF.Modules.Main.csproj +++ b/StartServerWPF.Modules.Main/StartServerWPF.Modules.Main.csproj @@ -13,6 +13,7 @@ + diff --git a/StartServerWPF.Modules.Main/ViewModels/MainViewModel.cs b/StartServerWPF.Modules.Main/ViewModels/MainViewModel.cs index 9d0dc14..eec9351 100644 --- a/StartServerWPF.Modules.Main/ViewModels/MainViewModel.cs +++ b/StartServerWPF.Modules.Main/ViewModels/MainViewModel.cs @@ -23,7 +23,7 @@ namespace StartServerWPF.Modules.Main.ViewModels { public class MainViewModel : BindableBase { - public MainViewModel(IDialogService dialogService) + public MainViewModel(IDialogService dialogService, WebsocketClient websocket) { Message = "View A from your Prism Module"; Console.WriteLine(System.Environment.CurrentDirectory + "\\" + JsonParser.systemConfigPath); @@ -45,6 +45,8 @@ namespace StartServerWPF.Modules.Main.ViewModels Console.WriteLine(sc.remoteDb.ServerAddress + "\t" + sc.remoteDb.ServerPort + "\t" + sc.remoteDb.UserName + "\t" + sc.remoteDb.Password); this._dialogService = dialogService; + this._websocket = websocket; + _websocket.WebSocketInit(); } @@ -452,6 +454,7 @@ namespace StartServerWPF.Modules.Main.ViewModels private DispatcherTimer timer1= new DispatcherTimer(); private readonly IDialogService _dialogService; + private readonly WebsocketClient _websocket; public void InitializeParams() { @@ -477,6 +480,16 @@ namespace StartServerWPF.Modules.Main.ViewModels /// 进程启动返回值 private int StartProcess(ProcessInfo proInfo) { + //using (Process compiler = new Process()) + //{ + // compiler.StartInfo.FileName = proInfo.ProName; + // compiler.StartInfo.Arguments = proInfo.ProPath + " -o " + proInfo.ProParams; + // compiler.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; + // compiler.Start(); + // compiler.WaitForExit(); + //} + + int seInd = ShellExecute(IntPtr.Zero, new StringBuilder("open"), new StringBuilder(proInfo.ProName + ".exe") , new StringBuilder(proInfo.ProParams), new StringBuilder(proInfo.ProPath), proInfo.ShowState); return seInd; diff --git a/StartServerWPF.Modules.Main/WebsocketClient.cs b/StartServerWPF.Modules.Main/WebsocketClient.cs new file mode 100644 index 0000000..455b538 --- /dev/null +++ b/StartServerWPF.Modules.Main/WebsocketClient.cs @@ -0,0 +1,64 @@ +using SuperSocket.ClientEngine; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using WebSocket4Net; + +namespace StartServerWPF.Modules.Main +{ + public class WebsocketClient + { + public WebSocket webSocket4Net = null; + public void WebSocketInit() + { + Console.WriteLine("客户端"); + webSocket4Net = new WebSocket("ws://localhost:5000/ws"); + webSocket4Net.Opened += WebSocket4Net_Opened; + webSocket4Net.Error += new EventHandler(WebSocket_Error); + webSocket4Net.MessageReceived += WebSocket4Net_MessageReceived; + webSocket4Net.Open(); + Console.WriteLine("客户端连接成功!"); + Thread thread = new Thread(ClientSendMsgToServer); + thread.IsBackground = true; + thread.Start(); + // webSocket4Net.Dispose(); + } + + public void ClientSendMsgToServer() + { + int i = 88; + while (true) + { + //Console.WriteLine($"客户端发送数据{i++}"); + Thread.Sleep(TimeSpan.FromSeconds(2)); + if (webSocket4Net.State == WebSocketState.Open) + { + webSocket4Net.Send("{\"type\":\"heartbeat\",\"utype\":\"device\",\"uid\":123}"); + } + else if (webSocket4Net.State == WebSocketState.Closed) + { + Thread.Sleep(TimeSpan.FromSeconds(5)); + webSocket4Net.Open(); + } + } + } + + private void WebSocket4Net_MessageReceived(object sender, MessageReceivedEventArgs e) + { + Debug.WriteLine($"服务端回复数据:{e.Message}!"); + } + + private void WebSocket4Net_Opened(object sender, EventArgs e) + { + // webSocket4Net.Send($"客户端准备发送数据!"); + } + void WebSocket_Error(object sender, ErrorEventArgs e) + { + Debug.WriteLine("websocket_Error:" + e.Exception.ToString()); + } + } +} diff --git a/StartServerWPF/App.xaml.cs b/StartServerWPF/App.xaml.cs index 179030a..e9b5678 100644 --- a/StartServerWPF/App.xaml.cs +++ b/StartServerWPF/App.xaml.cs @@ -18,7 +18,7 @@ namespace StartServerWPF protected override void RegisterTypes(IContainerRegistry containerRegistry) { - + containerRegistry.RegisterSingleton(); } protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog) diff --git a/StartServerWPF/Views/MainWindow.xaml b/StartServerWPF/Views/MainWindow.xaml index 4d85008..0c2bb7b 100644 --- a/StartServerWPF/Views/MainWindow.xaml +++ b/StartServerWPF/Views/MainWindow.xaml @@ -1,7 +1,7 @@