WebSocket是一种在单个TCP连接上进行全双工通信的协议。它允许服务器主动向客户端推送数据,而不需要客户端频繁地发送请求。WebSocket协议在HTML5中被定义,并得到了现代浏览器的广泛支持。
WebSocket通信主要有以下几种类型:
以下是使用NuGet包websocket-client
进行WebSocket异步发送和接收数据的示例代码:
using System;
using System.Net.WebSockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
using var client = new ClientWebSocket();
Uri serverUri = new Uri("wss://example.com/socket");
await client.ConnectAsync(serverUri, CancellationToken.None);
// 发送数据
string message = "Hello, WebSocket!";
byte[] buffer = Encoding.UTF8.GetBytes(message);
await client.SendAsync(new ArraySegment<byte>(buffer), WebSocketMessageType.Text, true, CancellationToken.None);
// 接收数据
var result = await client.ReceiveAsync(new ArraySegment<byte>(new byte[1024]), CancellationToken.None);
string receivedMessage = Encoding.UTF8.GetString(result.Buffer, 0, result.Count);
Console.WriteLine("Received: " + receivedMessage);
// 关闭连接
await client.CloseAsync(WebSocketCloseStatus.NormalClosure, "", CancellationToken.None);
}
}
WebSocketMessageType.Text
或WebSocketMessageType.Binary
正确指定数据类型。通过以上步骤,你可以实现WebSocket的异步发送和接收数据,并解决常见的连接和数据传输问题。
领取专属 10元无门槛券
手把手带您无忧上云