ASP.NET Core SignalR 概觀

什麼是 SignalR?

ASP.NET Core SignalR 是開放原始碼程式庫,可簡化將即時 Web 功能新增至應用程式的方式。 即時 Web 功能可讓伺服器端程式碼立即將內容推送至用戶端。

適合的 SignalR 候選項目:

  • 需要來自伺服器之高頻率更新的應用程式。 範例包括遊戲、社交網路、投票、拍賣、地圖和 GPS 應用程式。
  • 儀表板和監視應用程式。 範例包括公司儀表板、立即銷售更新或出差警示。
  • 共同作業應用程式。 白板應用程式和小組會議軟體是共同作業應用程式的範例。
  • 需要通知的應用程式。 社交網路、電子郵件、聊天、遊戲、出差警示和許多其他應用程式都會使用通知。

SignalR 提供 API,以用來建立伺服器對用戶端遠端程序呼叫 (RPC)。 RPC 會從伺服器端 .NET Core 程式碼叫用用戶端上的函數。 有數個支援的平台,而且每個平台都有其各自的用戶端 SDK。 因此,RPC 呼叫所叫用的程式設計語言會不同。

以下是一些 ASP.NET Core SignalR 功能:

  • 自動處理連線管理。
  • 同時將訊息傳送至所有已連線的用戶端。 例如,聊天室。
  • 將訊息傳送至特定用戶端或用戶端群組。
  • 調整以處理增加的流量。
  • SignalR 中樞通訊協定

來源裝載於 GitHub 上的 SignalR 存放庫

傳輸

SignalR 支援下列處理即時通訊的技術 (依正常後援的順序):

SignalR 會自動選擇伺服器和用戶端功能內的最佳傳輸方法。

集線器

SignalR 會使用「中樞」以在用戶端與伺服器之間進行通訊。

中樞是高階管線,可讓用戶端和伺服器對彼此呼叫方法。 SignalR 會自動處理跨機器界限的分派,以讓用戶端在伺服器上呼叫方法,反之亦然。 您可以將強型別參數傳遞至方法,而這會啟用模型繫結。 SignalR 提供兩種內建中樞通訊協定:以 JSON 為基礎的文字通訊協定,以及以 MessagePack 為基礎的二進位通訊協定。 相較於 JSON,MessagePack 一般會建立較小的訊息。 舊版瀏覽器必須支援 XHR 層級 2,才能提供 MessagePack 通訊協定支援。

中樞會傳送包含用戶端方法名稱和參數的訊息,來呼叫用戶端程式碼。 以方法參數形式所傳送的物件會使用所設定的通訊協定進行還原序列化。 用戶端會嘗試比對用戶端程式碼中的方法名稱。 用戶端找到相符項目時,會呼叫方法,並對其傳遞所還原序列化的參數資料。

不支援 ECMAScript 6 (ES6) 的瀏覽器

SignalR 以 ES6 為目標。 針對不支援 ES6 的瀏覽器,請將程式庫轉譯為 ES5。 如需詳細資訊,請參閱開始使用 ES6 – 使用 Traceur 和 Babel 將 ES6 轉譯為 ES5

其他資源