在C#中,使用ClientWebSocket
類來接收數據時,你需要設置一個事件處理程序來處理接收到的數據。以下是一個簡單的示例,展示了如何使用ClientWebSocket
接收數據:
using System;
using System.Net.WebSockets;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
// 創建一個新的WebSocket連接
using (ClientWebSocket webSocket = new ClientWebSocket())
{
// 連接到WebSocket服務器
Uri serverUri = new Uri("ws://your-websocket-server.com");
await webSocket.ConnectAsync(serverUri, CancellationToken.None);
// 發送一條消息到服務器(可選)
string message = "Hello, WebSocket Server!";
byte[] messageBytes = System.Text.Encoding.UTF8.GetBytes(message);
await webSocket.SendAsync(new ArraySegment<byte>(messageBytes), WebSocketMessageType.Text, true, CancellationToken.None);
// 設置一個事件處理程序來接收數據
webSocket.MessageReceived += (sender, e) =>
{
// 獲取接收到的數據
WebSocketReceiveResult result = e.Message.Substring(0, e.Count);
byte[] receivedBytes = new byte[result.Count];
Array.Copy(e.Message.ToArray(), 0, receivedBytes, 0, result.Count);
string receivedMessage = System.Text.Encoding.UTF8.GetString(receivedBytes);
// 處理接收到的數據
Console.WriteLine($"Received message: {receivedMessage}");
};
// 等待連接關閉
byte[] buffer = new byte[1024 * 4];
WebSocketReceiveResult result;
do
{
result = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
if (result.CloseStatus.HasValue)
{
break;
}
} while (!result.CloseStatus.HasValue);
// 關閉WebSocket連接
await webSocket.CloseAsync(result.CloseStatus.Value, result.CloseStatusDescription, CancellationToken.None);
}
}
}
在這個示例中,我們首先創建一個新的ClientWebSocket
實例,然后連接到WebSocket服務器。接著,我們設置了一個事件處理程序來處理接收到的數據。當接收到數據時,事件處理程序會提取數據并將其轉換為字符串。最后,我們等待連接關閉并關閉WebSocket連接。