c# 调用websocket
时间: 2023-10-14 09:07:24 浏览: 42
在C#中调用WebSocket可以使用System.Net.WebSockets命名空间提供的类和方法。下面是一个简单的示例:
```
using System;
using System.Net.WebSockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace WebSocketTest
{
class Program
{
static async Task Main(string[] args)
{
using (var client = new ClientWebSocket())
{
Uri serverUri = new Uri("wss://example.com/ws");
await client.ConnectAsync(serverUri, CancellationToken.None);
await Task.WhenAll(Receive(client), Send(client, "Hello, WebSocket!"));
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
}
static async Task Receive(ClientWebSocket client)
{
byte[] buffer = new byte[1024];
while (client.State == WebSocketState.Open)
{
var result = await client.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
Console.WriteLine($"Received: {Encoding.UTF8.GetString(buffer, 0, result.Count)}");
}
}
static async Task Send(ClientWebSocket client, string message)
{
byte[] bytes = Encoding.UTF8.GetBytes(message);
await client.SendAsync(new ArraySegment<byte>(bytes), WebSocketMessageType.Text, true, CancellationToken.None);
}
}
}
```
在这个例子中,程序首先使用`ClientWebSocket`连接到WebSocket服务器,然后启动两个异步任务:`Receive`和`Send`。`Receive`任务循环接收WebSocket服务器发送的数据,并将其输出到控制台。`Send`任务发送一条消息到WebSocket服务器。程序在两个任务完成后结束。
注意,`ConnectAsync`和`ReceiveAsync`方法都是异步的,需要使用`await`关键字来等待它们完成。