You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
1.5 KiB

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}");
}
}
}