ASP.NET SignalR 是一個用于構建實時 Web 應用程序的庫,它允許服務器端代碼向客戶端推送消息。要實現消息廣播,你需要遵循以下步驟:
安裝 SignalR: 首先,確保你已經安裝了 ASP.NET SignalR。如果沒有,可以通過 NuGet 包管理器安裝。在 Visual Studio 中,右鍵單擊項目 -> 選擇 “管理 NuGet 程序包” -> 搜索 “Microsoft.AspNet.SignalR” -> 安裝。
創建 Hub:
SignalR 使用 Hub 類來處理客戶端連接和消息傳遞。在你的項目中創建一個新的類,繼承自 Hub
。例如,創建一個名為 ChatHub
的類:
public class ChatHub : Hub
{
public void SendMessage(string user, string message)
{
// 廣播消息給所有連接的客戶端
Clients.All.broadcastMessage($"{user}: {message}");
}
}
配置 SignalR:
在 Startup.cs
文件中,配置 SignalR 以使用 Hub 路由。在 ConfigureServices
方法中添加以下代碼:
services.AddSignalR();
然后,在 Configure
方法中添加以下代碼:
app.UseSignalR();
創建客戶端:
在你的項目中創建一個新的 HTML 文件(例如 Chat.html
),并添加以下代碼以創建一個簡單的 SignalR 客戶端:
<!DOCTYPE html>
<html>
<head>
<title>Chat</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/aspnet-signalr/1.1.4/signalr.min.js"></script>
</head>
<body>
<div id="chat">
<!-- 在這里添加聊天界面元素 -->
</div>
<script>
$(document).ready(function () {
// 建立與服務器的連接
var connection = new signalR.HubConnectionBuilder().withUrl("/chatHub").build();
// 連接成功時觸發
connection.on("connected", function (data) {
console.log("Connected to the server");
});
// 接收服務器發送的消息
connection.on("broadcastMessage", function (user, message) {
$("#chat").append($("<p>").text(`${user}: ${message}`));
});
// 向服務器發送消息
$("#sendButton").click(function () {
var user = $("#username").val();
var message = $("#message").val();
connection.invoke("SendMessage", user, message);
});
// 開始連接
connection.start().catch(function (error) {
console.error("Error connecting to the server:", error);
});
});
</script>
</body>
</html>
創建 Hub 路由:
在 Startup.cs
文件中,創建一個新的路由以處理 SignalR 連接。在 Configure
方法中添加以下代碼:
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<ChatHub>("/chatHub");
});
現在,當用戶點擊 “發送” 按鈕時,SendMessage
方法將被調用,服務器將廣播消息給所有連接的客戶端。客戶端接收到消息后,將其顯示在聊天界面中。