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 進行實時雙向通信了。