SignalR 教程:如何在 .NET Core Web App 中實現(xiàn) SignalR?
什么是 SignalR?
SignalR 是一個開源 ASP.NET Core 庫,有助于添加實時功能以在 .NET Core Web 應用程序中實現(xiàn) SignalR。
.NET Core 中 SignalR 的用例
需要高頻服務器更新的 ASP.NET Core 應用程序。
儀表板和監(jiān)控應用程序。
團隊會議應用程序和協(xié)作應用程序
先決條件
視覺工作室代碼
ASP.NET Core 基礎知識
ASP.NET 核心 Web 應用程序
教程目標:SignalR 與 .NET Core
.NET Core 中的 SignalR教程將有助于學習如何在 .Core Web 應用程序中實現(xiàn) SignalR。以下是指南的要點:
添加 SignalR 客戶端庫
創(chuàng)建 SignalR 中心
配置項目
構(gòu)建用戶界面并添加發(fā)送和接收消息的邏輯
在 .NET Core 中實現(xiàn) SignalR 的步驟
我們的第一步是創(chuàng)建一個 .NET Core Web 應用程序項目。我們不會討論如何構(gòu)建它,我們想,你已經(jīng)知道了。
因此,為了進一步在 ASP.NET Core 中實現(xiàn) Signal R,我們需要在項目中添加 SignalR 客戶端庫。
要添加 SignalR 客戶端庫,請按照以下屏幕截圖進行操作。
安裝完成后,創(chuàng)建 SignalR Hub:ChatHub 類。為此,您可以使用以下代碼。
// 聊天中心.cs
使用 Microsoft.AspNetCore.SignalR;使用系統(tǒng);使用 System.Collections.Generic;使用 System.Linq;使用 System.Threading.Tasks;命名空間 SignalrImplementation.Models{
公開課 ChatHub : Hub
{
公共異步任務 SendMessage(字符串用戶,字符串消息)
{
等待 Clients.All.SendAsync("ReceiveMessage", user, message);
}
}}
想要輕松無憂的 .NET Core 應用程序開發(fā)?
Bacancy 在這里等你!聯(lián)系我們聘請 .NET Core 開發(fā)人員,以其出色的問題解決能力高效地滿足您的項目要求。
現(xiàn)在,在 startup.cs 的 ConfigureServices 方法中添加服務引用。
//啟動.cs
public void ConfigureServices(IServiceCollection 服務)
{
services.AddControllersWithViews();
服務.AddSignalR();
}
在startup.cs的Configure方法中添加chathub類。
//啟動.cs
公共無效配置(IApplicationBuilder 應用程序,IWebHostEnvironment env)
{
如果(env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
別的
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseSignalR(路線=>
{
路線.MapHub("/聊天中心");
})
app.UseEndpoints(端點=>
{
端點.MapControllerRoute(
名稱:“默認”,
模式:“{controller=Home}/{action=Index}/{id?}”);
});
}
現(xiàn)在,下一步是為 HubConnection 創(chuàng)建新的 JS 文件。
// 聊天.js
常量連接 = new signalR.HubConnectionBuilder()
.withUrl("/chatHub")
。建造();
connection.on("ReceiveMessage", (user, message) => {
const msg = message.replace(/&/g, "&").replace(//g, ">");
const encodedMsg = user + " :: " + msg;
const li = document.createElement("li");
li.textContent = encodedMsg;
document.getElementById("messagesList").appendChild(li);});connection.start().catch(err => console.error(err.toString()));//發(fā)送消息 document.getElementById("sendMessage").addEventListener("點擊", event => {
const user = document.getElementById("userName").value;
const message = document.getElementById("userMessage").value;
connection.invoke("SendMessage", user, message).catch(err => console.error(err.toString()));
事件.preventDefault();});
到目前為止,我們已經(jīng)完成了我們的邏輯。讓我們?yōu)榱奶鞙y試構(gòu)建一個用戶界面。
// 索引.cshtml
@頁<div 類="容器">
<div class="行"> </div>
<div 類="行">
<div class="col-md-12">
<div class="col-md-6">
<div class="col-md-3">用戶</div>
<div class="col-md-9"><input type="text" id="userName" /></div>
</div>
</div>
<div class="col-md-12">
<div class="col-md-6">
<div class="col-md-3">消息</div>
<div class="col-md-9">
<input type="text" id="userMessage" />
<input type="button" id="sendMessage" value="發(fā)送消息" />
</div>
</div>
</div>
</div>
<div 類="行">
<div class="col-12">
<hr />
</div>
</div>
<div 類="行">
<div class="col-6"> </div>
<div class="col-6">
<ul id="messagesList"></ul>
</div>
</div></div>
至此,我們完成了 .NET Core 中 SignalR 的實現(xiàn)。在瀏覽器中運行應用程序。
Github 存儲庫:.NET Core 示例中的 SignalR
如果您只想克隆存儲庫,那么這里是源代碼:signalr-example。隨意克隆演示應用程序并試用它。
結(jié)論
因此,這是有關(guān)如何在 .NET Core 中實現(xiàn) SignalR 的分步指南。我們希望這份關(guān)于在 .NET Core 中實現(xiàn) SignalR 的分步指南對您有所幫助,尤其是當您正在尋找一名在管理此類復雜任務方面具有一流專業(yè)知識的熟練NET 開發(fā)人員時。我們隨時為您服務,如有任何問題、反饋或建議,請隨時與我們聯(lián)系,以幫助我們改進教程。
(言鼎科技)