在ASP.NET中使用WebSocket,你需要遵循以下步骤:
Install-Package System.Net.WebSockets
WebSocketHandler.cs
的文件,并在其中添加以下代码:using System.Net.WebSockets;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
public class WebSocketHandler
{
private readonly WebSocket _webSocket;
public WebSocketHandler(WebSocket webSocket)
{
_webSocket = webSocket;
}
public async Task OnConnectedAsync(HttpContext context)
{
// 客户端已连接,可以在这里处理连接逻辑
await _webSocket.AcceptAsync();
}
public async Task OnMessageAsync(HttpContext context, WebSocketReceiveEventArgs eventArgs)
{
// 接收到客户端发送的消息,可以在这里处理消息逻辑
var message = Encoding.UTF8.GetString(eventArgs.Count);
Console.WriteLine($"Received message: {message}");
// 将消息回发给客户端
await _webSocket.SendAsync(Encoding.UTF8.GetBytes($"Echo: {message}"), eventArgs.MessageType, eventArgs.CloseStatus);
}
public async Task OnDisconnectedAsync(HttpContext context, WebSocketCloseStatus closeStatus)
{
// 客户端已断开连接,可以在这里处理断开连接逻辑
Console.WriteLine($"Client disconnected with status: {closeStatus}");
}
}
WebSocketHandler
。例如,你可以在Startup.cs
文件中添加以下代码:public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// ... 其他配置代码 ...
app.UseWebSockets();
app.UseEndpoints(endpoints =>
{
endpoints.MapWebSocket("/websocket", new WebSocketHandler(app.Services.GetRequiredService<WebSocketOptions>().WebSockets));
});
}
现在,你已经成功在ASP.NET项目中设置了一个WebSocket处理程序。客户端可以通过/websocket
路径连接到你的应用程序,并发送/接收消息。你可以根据需要扩展WebSocketHandler
类以处理更复杂的逻辑。