在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
現代網絡仰賴互動性和即時反饋。在構建響應式應用程式時,即時網絡功能是必須的。這就是SignalR大放異彩的地方。 ASP.NET Core SignalR 是一個讓您更簡單地為應用程式添加實時網路功能的程式庫。
在本教程中,我們將開始了解SignalR的基本概念和細節。讓我們開始吧!
ASP.NET Core SignalR 提供一個用於創建實時網路功能的 API,使用 WebSockets 和其他技術,如伺服器發送事件。它不限於 ASP.NET Core。您可以將 SignalR 與各種客戶端一起使用,例如瀏覽器或移動應用程式,確保連接的客戶端能夠即時更新。
要開始,您需要:
SignalR 的核心是 SignalR hub,這是一個讓客戶端和伺服器端互動的中心節點。
建立一個新的 ASP.NET Core 專案。現在,新增一個類別並將其命名為 ChatHub。這將作為我們的 SignalR hub。
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 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 提供了卓越的即時 web 功能基礎,但開發人員常常尋找工具來提升整體體驗和功能。而這正是 Iron Suite 登場的時候。 Iron Suite 登場了。
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 Suite 只需兩個產品的價格! 這不僅確保您獲得最高的性價比,還為您提供全面的工具包,以革新您的ASP.NET Core SignalR應用程式。