|
|
|
@ -0,0 +1,51 @@ |
|
|
|
|
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<byte>(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<byte>(buffer), CancellationToken.None); |
|
|
|
|
string message = Encoding.UTF8.GetString(buffer, 0, result.Count); |
|
|
|
|
Console.WriteLine($"Received: {message}"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |