在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连接。