ASP.NET Core WebSocket 提供了实时双向通信的功能。以下是如何在 ASP.NET Core 中设置和使用 WebSocket 的步骤:
-
创建一个 ASP.NET Core 项目: 使用 Visual Studio 或命令行工具创建一个新的 ASP.NET Core Web 应用项目。
-
添加 WebSocket 支持: 在项目中,打开
Startup.cs
文件,找到ConfigureServices
方法,然后在服务容器中添加以下代码以添加 WebSocket 支持:services.AddWebSocket(options => { options.KeepAliveInterval = TimeSpan.Zero; options.CloseTimeout = TimeSpan.Zero; });
-
创建 WebSocket 处理程序: 在项目中创建一个新的类,例如
ChatWebSocketHandler.cs
,并继承自WebSocketHandler
类。在这个类中,你可以处理 WebSocket 连接、消息和关闭事件。public class ChatWebSocketHandler : WebSocketHandler { public override async Task OnConnectedAsync(WebSocket webSocket, WebSocketContext context) { // 处理连接事件 } public override async Task OnMessageAsync(WebSocket webSocket, WebSocketMessage message) { // 处理接收到的消息 } public override async Task OnDisconnectedAsync(WebSocket webSocket, WebSocketCloseStatus status, string reason) { // 处理断开连接事件 } }
-
配置 WebSocket 路由: 在
Startup.cs
文件中,找到Configure
方法,然后在UseEndpoints
方法中添加一个 WebSocket 路由,如下所示:app.UseEndpoints(endpoints => { endpoints.MapControllers(); endpoints.MapWebSocket("/chat"); });
这将使得 WebSocket 服务监听
/chat
路径上的连接。 -
在
ChatWebSocketHandler
中处理 WebSocket 事件: 在ChatWebSocketHandler
类中,实现OnConnectedAsync
、OnMessageAsync
和OnDisconnectedAsync
方法,以处理 WebSocket 连接、消息和关闭事件。例如,你可以在接收到消息时将其广播给所有连接的客户端。 -
创建客户端: 创建一个客户端应用程序,例如一个简单的 HTML 和 JavaScript 页面,用于连接到 WebSocket 服务并发送/接收消息。在 JavaScript 中,使用
WebSocket
对象连接到服务器,并实现相应的逻辑来处理接收到的消息和发送消息。const socket = new WebSocket('ws://localhost:5000/chat'); socket.addEventListener('open', (event) => { console.log('Connected to WebSocket server'); }); socket.addEventListener('message', (event) => { console.log('Received message:', event.data); }); socket.addEventListener('close', (event) => { console.log('Disconnected from WebSocket server'); }); function sendMessage(message) { socket.send(message); }
按照以上步骤,你就可以在 ASP.NET Core 项目中使用 WebSocket 进行实时双向通信了。