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 进行实时双向通信了。