using System.Net.WebSockets; using System.Text; namespace WebSocketEchoClient; class Program { static async Task Main(string[] args) { Console.WriteLine("Starting WebSocket Client..."); using (ClientWebSocket ws = new ClientWebSocket()) { try { await ws.ConnectAsync(new Uri("ws://echo.websocket.org"), CancellationToken.None); Console.WriteLine("Connected!"); Task receiveTask = ReceiveMessages(ws); await SendMessages(ws); await receiveTask; } catch (Exception ex) { Console.WriteLine($"Exception: {ex.Message}"); } } } static async Task SendMessages(ClientWebSocket ws) { while (ws.State == WebSocketState.Open) { string message = Console.ReadLine(); byte[] bytes = Encoding.UTF8.GetBytes(message); await ws.SendAsync(new ArraySegment(bytes), WebSocketMessageType.Text, true, CancellationToken.None); } } static async Task ReceiveMessages(ClientWebSocket ws) { byte[] buffer = new byte[1024]; while (ws.State == WebSocketState.Open) { WebSocketReceiveResult result = await ws.ReceiveAsync(new ArraySegment(buffer), CancellationToken.None); string message = Encoding.UTF8.GetString(buffer, 0, result.Count); Console.WriteLine($"Received: {message}"); } } }