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(string url) { Console.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(); } public void SendMes(string str) { if (webSocket4Net.State == WebSocketState.Open) { webSocket4Net.Send(str); } } private void ClientSendHeartbeat() { 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()); } } }