SignalR 教程:如何在 .NET Core Web App 中實現(xiàn) SignalR?

言鼎科技 2023-06-07 419

什么是 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 客戶端庫,請按照以下屏幕截圖進行操作。

SignalR 教程:如何在 .NET Core Web App 中實現(xiàn) SignalR?

安裝完成后,創(chuàng)建 SignalR Hub:ChatHub 類。為此,您可以使用以下代碼。

// 聊天中心.cs

SignalR 教程:如何在 .NET Core Web App 中實現(xiàn) SignalR?
使用 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

SignalR 教程:如何在 .NET Core Web App 中實現(xiàn) SignalR?
public void ConfigureServices(IServiceCollection 服務)
 {
   services.AddControllersWithViews();
   服務.AddSignalR();
}

在startup.cs的Configure方法中添加chathub類。

//啟動.cs

SignalR 教程:如何在 .NET Core Web App 中實現(xiàn) SignalR?
公共無效配置(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

SignalR 教程:如何在 .NET Core Web App 中實現(xiàn) SignalR?
常量連接 = 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

SignalR 教程:如何在 .NET Core Web App 中實現(xiàn) SignalR?
@頁<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)。在瀏覽器中運行應用程序。

SignalR 教程:如何在 .NET Core Web App 中實現(xiàn) SignalR?

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)系,以幫助我們改進教程。

言鼎科技

The End