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