| 
						
						
						
					 | 
					 | 
					@ -1,9 +1,11 @@
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					using SuperSocket.ClientEngine;
 | 
					 | 
					 | 
					 | 
					using StartServerWPF.Modules.Main.Model;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					using SuperSocket.ClientEngine;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					using System;
 | 
					 | 
					 | 
					 | 
					using System;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					using System.Collections.Generic;
 | 
					 | 
					 | 
					 | 
					using System.Collections.Generic;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					using System.Diagnostics;
 | 
					 | 
					 | 
					 | 
					using System.Diagnostics;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					using System.Linq;
 | 
					 | 
					 | 
					 | 
					using System.Linq;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					using System.Text;
 | 
					 | 
					 | 
					 | 
					using System.Text;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					using System.Text.Json;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					using System.Threading;
 | 
					 | 
					 | 
					 | 
					using System.Threading;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					using System.Threading.Tasks;
 | 
					 | 
					 | 
					 | 
					using System.Threading.Tasks;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					using WebSocket4Net;
 | 
					 | 
					 | 
					 | 
					using WebSocket4Net;
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -13,59 +15,75 @@ namespace StartServerWPF.Modules.Main
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    public class WebsocketClient
 | 
					 | 
					 | 
					 | 
					    public class WebsocketClient
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    {
 | 
					 | 
					 | 
					 | 
					    {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        public WebSocket webSocket4Net = null;
 | 
					 | 
					 | 
					 | 
					        public WebSocket webSocket4Net = null;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        public Action<ErrorEventArgs> WebsocketError;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        public Action<string> WebSocketMessageReceived;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        public void WebSocketInit(string url)
 | 
					 | 
					 | 
					 | 
					        public void WebSocketInit(string url)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        {
 | 
					 | 
					 | 
					 | 
					        {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            Console.WriteLine("客户端");
 | 
					 | 
					 | 
					 | 
					            Debug.WriteLine("客户端");
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            webSocket4Net = new WebSocket(url);
 | 
					 | 
					 | 
					 | 
					            webSocket4Net = new WebSocket(url);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            webSocket4Net.Opened += WebSocket4Net_Opened;
 | 
					 | 
					 | 
					 | 
					            webSocket4Net.Opened += WebSocket4Net_Opened;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            webSocket4Net.Error += new EventHandler<ErrorEventArgs>(WebSocket_Error);
 | 
					 | 
					 | 
					 | 
					            webSocket4Net.Error += new EventHandler<ErrorEventArgs>(WebSocket_Error);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            webSocket4Net.MessageReceived += WebSocket4Net_MessageReceived;
 | 
					 | 
					 | 
					 | 
					            webSocket4Net.MessageReceived += WebSocket4Net_MessageReceived;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            webSocket4Net.Open();
 | 
					 | 
					 | 
					 | 
					            webSocket4Net.Open();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            Console.WriteLine("客户端连接成功!");
 | 
					 | 
					 | 
					 | 
					            Debug.WriteLine("客户端连接成功!");
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            Thread thread = new Thread(ClientSendHeartbeat);
 | 
					 | 
					 | 
					 | 
					          
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            thread.IsBackground = true;
 | 
					 | 
					 | 
					 | 
					           // thread.Start();
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            thread.Start();
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          //  webSocket4Net.Dispose();
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        }
 | 
					 | 
					 | 
					 | 
					        }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        public void SendMes(string str)
 | 
					 | 
					 | 
					 | 
					        public void SiginServer(string account,string password)
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        {
 | 
					 | 
					 | 
					 | 
					        {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if (webSocket4Net.State == WebSocketState.Open)
 | 
					 | 
					 | 
					 | 
					            isHeartbeat = false;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            {
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                webSocket4Net.Send(str);
 | 
					 | 
					 | 
					 | 
					            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;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        private void ClientSendHeartbeat()
 | 
					 | 
					 | 
					 | 
					        public void SendMes(string message)
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        {
 | 
					 | 
					 | 
					 | 
					        {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            int i = 88;
 | 
					 | 
					 | 
					 | 
					            webSocket4Net.Send(message);
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            while (true)
 | 
					 | 
					 | 
					 | 
					        }
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        bool isHeartbeat = false;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        private void SendHeartbeat()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            while (isHeartbeat)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            {
 | 
					 | 
					 | 
					 | 
					            {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                //Console.WriteLine($"客户端发送数据{i++}");
 | 
					 | 
					 | 
					 | 
					                //Console.WriteLine($"客户端发送数据{i++}");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                Thread.Sleep(TimeSpan.FromSeconds(2));
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                if (webSocket4Net.State == WebSocketState.Open)
 | 
					 | 
					 | 
					 | 
					                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)
 | 
					 | 
					 | 
					 | 
					                else if (webSocket4Net.State == WebSocketState.Closed)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                {
 | 
					 | 
					 | 
					 | 
					                {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    Thread.Sleep(TimeSpan.FromSeconds(5));
 | 
					 | 
					 | 
					 | 
					                    Thread.Sleep(TimeSpan.FromSeconds(10));
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    webSocket4Net.Open();
 | 
					 | 
					 | 
					 | 
					                    webSocket4Net.Open();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                }
 | 
					 | 
					 | 
					 | 
					                }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                Thread.Sleep(TimeSpan.FromSeconds(5));
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            }
 | 
					 | 
					 | 
					 | 
					            }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        }
 | 
					 | 
					 | 
					 | 
					        }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        private void WebSocket4Net_MessageReceived(object sender, MessageReceivedEventArgs e)
 | 
					 | 
					 | 
					 | 
					        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)
 | 
					 | 
					 | 
					 | 
					        void WebSocket_Error(object sender, ErrorEventArgs e)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        {
 | 
					 | 
					 | 
					 | 
					        {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            WebsocketError?.Invoke(e);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            Debug.WriteLine("websocket_Error:" + e.Exception.ToString());
 | 
					 | 
					 | 
					 | 
					            Debug.WriteLine("websocket_Error:" + e.Exception.ToString());
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        }
 | 
					 | 
					 | 
					 | 
					        }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
 
 |