websocket c#
时间: 2023-09-26 22:13:42 浏览: 43
WebSocket 是一种在 Web 浏览器和服务器之间进行双向通信的协议。在 C# 中,可以使用 .NET 中的 System.Net.WebSockets 命名空间来实现 WebSocket。
要在 C# 中使用 WebSocket,首先需要创建一个 WebSocket 对象。可以通过调用 WebSocket 的构造函数并传入 WebSocket URL 来创建一个 WebSocket 对象。例如:
```csharp
using System;
using System.Net.WebSockets;
using System.Threading;
using System.Threading.Tasks;
public class WebSocketClient
{
private static async Task Connect(string url)
{
using (ClientWebSocket socket = new ClientWebSocket())
{
await socket.ConnectAsync(new Uri(url), CancellationToken.None);
await Task.WhenAll(Receive(socket), Send(socket));
await socket.CloseAsync(WebSocketCloseStatus.NormalClosure, "Closed by the client", CancellationToken.None);
}
}
private static async Task Receive(ClientWebSocket socket)
{
byte[] buffer = new byte[1024];
while (socket.State == WebSocketState.Open)
{
var result = await socket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
if (result.MessageType == WebSocketMessageType.Text)
{
string message = System.Text.Encoding.UTF8.GetString(buffer, 0, result.Count);
Console.WriteLine("Received: " + message);
}
else if (result.MessageType == WebSocketMessageType.Close)
{
await socket.CloseAsync(WebSocketCloseStatus.NormalClosure, "Closed by the server", CancellationToken.None);
}
}
}
private static async Task Send(ClientWebSocket socket)
{
string message = "Hello, WebSocket!";
byte[] buffer = System.Text.Encoding.UTF8.GetBytes(message);
await socket.SendAsync(new ArraySegment<byte>(buffer), WebSocketMessageType.Text, true, CancellationToken.None);
}
public static void Main(string[] args)
{
string url = "ws://localhost:5000/socket"; // WebSocket URL
Connect(url).Wait();
}
}
```
上述代码演示了如何使用 C# 创建一个 WebSocket 客户端。首先通过调用 `Connect` 方法连接到指定的 WebSocket 服务器,然后在 `Receive` 方法中循环接收来自服务器的消息,并在 `Send` 方法中发送一条消息给服务器。最后,在 `Main` 方法中指定 WebSocket 的 URL,并调用 `Connect` 方法进行连接。
请注意,此示例仅适用于 .NET Core 2.1 或更高版本。在旧版本的 .NET Framework 中,可以使用类似的方法,但是命名空间和方法名称可能会有所不同。