在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
現代網頁依靠互動性與即時反饋而蓬勃發展。 在構建響應式應用程序時,實時網絡功能是必須的。這就是 SignalR 發揮作用的地方。 ASP.NET Core SignalR是一個庫,使將即時網頁功能添加到您的應用程式中比您想像的更簡單。
在本教程中,我們將開始探索 SignalR 的基礎和細微差別。 讓我們開始吧!
ASP.NET Core SignalR 提供了一個 API,用於通過 WebSockets 及其他技術(如伺服器推送事件)創建即時網頁功能。 它不僅僅限於 ASP.NET Core。 您可以將 SignalR 與各種客戶端一起使用,例如瀏覽器或行動應用程式,確保連接的客戶端能夠即時更新。
要開始,您需要:
ASP.NET Core SDK
SignalR 的核心圍繞著 SignalR 集線器,這是一個客戶端和服務器交互的中心點。
建立一個新的 ASP.NET Core 專案。 現在,新增一個類別並將其命名為 ChatHub。 這將作為我們的SignalR集線器。
using Microsoft.AspNetCore.SignalR;
public class ChatHub : Hub
{
public async Task SendMessage(string user, string message)
{
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
}
using Microsoft.AspNetCore.SignalR;
public class ChatHub : Hub
{
public async Task SendMessage(string user, string message)
{
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
}
Imports Microsoft.AspNetCore.SignalR
Public Class ChatHub
Inherits Hub
Public Async Function SendMessage(ByVal user As String, ByVal message As String) As Task
Await Clients.All.SendAsync("ReceiveMessage", user, message)
End Function
End Class
在公開類別 Startup 中,我們來整合我們的中心。
public void ConfigureServices(IServiceCollection services)
{
services.AddSignalR();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<ChatHub>("/chatHub");
});
}
public void ConfigureServices(IServiceCollection services)
{
services.AddSignalR();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<ChatHub>("/chatHub");
});
}
Public Sub ConfigureServices(ByVal services As IServiceCollection)
services.AddSignalR()
End Sub
Public Sub Configure(ByVal app As IApplicationBuilder, ByVal env As IWebHostEnvironment)
app.UseEndpoints(Sub(endpoints)
endpoints.MapHub(Of ChatHub)("/chatHub")
End Sub)
End Sub
SignalR 是多功能的。雖然本教程專注於 ASP.NET Core 和 JavaScript 客戶端庫,但 SignalR 支持多種客戶端,從 .NET 到 Java。
SignalR 客戶端庫允許您的客戶端代碼直接連接和與服務器端通信。以我們的例子來說,讓我們使用 JavaScript。
首先,添加 SignalR JavaScript 客戶端庫:
<script src="https://cdn.jsdelivr.net/npm/@microsoft/signalr@3.1.8/dist/browser/signalr.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@microsoft/signalr@3.1.8/dist/browser/signalr.js"></script>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<script src="https://cdn.jsdelivr.net/npm/@microsoft/signalr@3.1.8/dist/browser/signalr.js"></script>
現在,您可以連接到中心:
const connection = new signalR.HubConnectionBuilder()
.withUrl("/chatHub")
.build();
connection.start();
connection.on("ReceiveMessage", (user, message) => {
console.log(`${user} says: ${message}`);
});
const connection = new signalR.HubConnectionBuilder()
.withUrl("/chatHub")
.build();
connection.start();
connection.on("ReceiveMessage", (user, message) => {
console.log(`${user} says: ${message}`);
});
const connection = (New signalR.HubConnectionBuilder()).withUrl("/chatHub").build()
connection.start()
connection.on("ReceiveMessage", Sub(user, message)
console.log(`${user} says:= ${message}`)
End Sub)
這個簡單的客戶端程式碼連接到集線器並監聽任何廣播的消息。
使用我們之前的客戶端和伺服器端代碼片段,發送消息很簡單。 伺服器和客戶端都可以發起通信。
從伺服器端:
await Clients.All.SendAsync("ReceiveMessage", "Server", "Hello from server!");
await Clients.All.SendAsync("ReceiveMessage", "Server", "Hello from server!");
Await Clients.All.SendAsync("ReceiveMessage", "Server", "Hello from server!")
來自客戶:
connection.send("SendMessage", "Client", "Hello from client!");
connection.send("SendMessage", "Client", "Hello from client!");
connection.send("SendMessage", "Client", "Hello from client!")
ASP.NET Core SignalR 提供先進的即時通訊功能:
分組連線:將已連線的客戶劃分為群組,向特定群組廣播訊息。
處理斷線:自動管理客戶端連接和斷線。
為了實現可擴展的即時功能,整合Azure SignalR 服務. 這項全託管服務支持大量同時連線,使其成為高需求應用程式的理想選擇。
整合 Azure SignalR 服務:
安裝這個Azure SignalR SDK.
使用 Azure Service Bus 作為後端支持。
public void ConfigureServices(IServiceCollection services)
{
services.AddSignalR().AddAzureSignalR();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseAzureSignalR(routes =>
{
routes.MapHub<ChatHub>("/chatHub");
});
}
public void ConfigureServices(IServiceCollection services)
{
services.AddSignalR().AddAzureSignalR();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseAzureSignalR(routes =>
{
routes.MapHub<ChatHub>("/chatHub");
});
}
Public Sub ConfigureServices(ByVal services As IServiceCollection)
services.AddSignalR().AddAzureSignalR()
End Sub
Public Sub Configure(ByVal app As IApplicationBuilder, ByVal env As IWebHostEnvironment)
app.UseAzureSignalR(Sub(routes)
routes.MapHub(Of ChatHub)("/chatHub")
End Sub)
End Sub
雖然 ASP.NET Core SignalR 為即時網絡功能提供了出色的基礎,但開發人員通常會尋找工具來增強整體體驗和功能。 那就是...Iron Software 套件庫進入畫面。
Iron Suite 是一套高端 .NET 程式庫組合,專為加速您的 ASP.NET Core 應用程式而設計,包括那些使用 SignalR 的應用程式。 這個套件中的每個產品都提供了獨特的功能,確保應用程式具有更豐富的體驗。 讓我們深入探索這些產品:
了解更多有關 IronPDF 功能的信息讓您在 .NET 應用程式中生成、編輯和讀取 PDF 文件。 想像一下在一個團隊即時協作文件的情境中整合 SignalR。當發生變更時,文件可以被即時轉換成 PDF,並且更新可以無縫推送給所有連接的客戶端。 SignalR 的即時功能與 IronPDF 的能力相結合,可能會革新協作工具。
在處理 Excel 試算表時,探索 IronXL 功能是一位冠軍。 在商業環境中,電子表格扮演著至關重要的角色。 將 SignalR 與 IronXL 結合使用意味著財務團隊可以即時協作處理預算表,並且在變更發生時立即看到更新。 想像一個情境,來自各個部門的數據條目流入一個中央的 Excel 表格,並為所有利益相關者提供即時更新。 實時通訊和動態試算表管理的融合透過此組合成為現實。
光學字符識別(光學字符識別)已成為現代應用程式中的主流。 體驗 IronOCR 的運作賦予 .NET 開發人員從圖片和文件中提取文字的能力。 將此與 SignalR 的實時功能配對可以改變遊戲規則。 考慮一個平台,使用者可以上載包含文本數據的圖像。 一旦IronOCR處理完圖像後,可以使用SignalR即時通知用戶,使數據提取互動且立即。
條碼是庫存管理、票務系統等方面不可或缺的一部分。 探索 IronBarcode 的功能簡化了條碼的創建和讀取。 現在,想像將其與 SignalR 集成到倉庫管理系統中。 當物品被掃描時,庫存會即時更新,通知連接的客戶有關庫存水平,確保物流運營的順暢。
ASP.NET Core SignalR 與 Iron Suite 強大工具的融合,為開發者和終端使用者提供了更加卓越的體驗。 實時網路功能不僅關乎溝通,還是一個變革性的工具,當與像 Iron Suite 這樣的資源配對時,可以重新定義互動應用程式。
值得注意的是,Iron Suite 提供的價值主張。每個產品許可證從 $749 開始,為開發者提供了一組高級功能。 但是,如果您不確定是否立即承諾,每個產品都慷慨地提供一個Iron Software 產品的免費試用. 這讓您在做出決定之前可以先體驗這些功能。
而且,如果您正在考慮整合多個工具,這有個好消息:您可以購買整個 Iron Suite 以獲得更多價值只需兩個產品的價格! 這不僅能確保您物超所值,還提供您一個全面的工具組來革新您的 ASP.NET Core SignalR 應用程式。