[ASP.NET Core 3.0學習筆記] - SignalR

SignalR簡介

SignalR是一個.NET Core/.NET Framework的開源實時框架. SignalR的可使用

  1. Web Socket
  2. Server Sent Events
  3. Long Polling

作爲底層傳輸方式.

SignalR基於這三種技術構建, 抽象於它們之上, 它讓你更好的關注業務問題而不是底層傳輸技術問題.

SignalR這個框架分服務器端和客戶端, 服務器端支持ASP.NET Core 和 ASP.NET; 而客戶端除了支持瀏覽器裏的javascript以外, 也支持其它類型的客戶端, 例如桌面應用.

https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/signalr?view=aspnetcore-3.0&tabs=visual-studio
https://docs.microsoft.com/zh-cn/aspnet/core/signalr/introduction?view=aspnetcore-3.0
solenovex的SignalR講解 https://www.cnblogs.com/cgzl/p/9515516.html

使用

Step1

使用ASP.NET Core 3.0框架。添加signalr.js
C#項目中創建一個繼承Microsoft.AspNetCore.SignalR.Hub的類,用於做傳輸控制。
配置SignalR。在Startup.cs文件中services.AddSignalR()

app.UseEndpoints(endpoints =>
            {
                endpoints.MapRazorPages();
                endpoints.MapHub<ChatHub>("/chatHub");
            });

其中ChatHub是實現的繼承類。/chatHub與客戶端代碼js文件裏的連接項保持一致即可。

Step2

客戶端代碼的.cshtmlhtml文件裏需要引用兩個js文件。一個是SignalR的signalr.js,一個是跟客戶端業務相關的如chat.js
chat.js中,需要創建SignalR對象並綁定事件。這裏的"/chatHub"與上文保持一致。

var connection = new signalR.HubConnectionBuilder().withUrl("/chatHub").build();

這裏需要注意的就是這幾種模式

connection.on();
connection.start().then();
connection.invoke();
  1. connection.on();用於接收消息。以方法名字符串的形式調用。
  2. connection.start().then();用於連接建立成功後的處理。
  3. connection.invoke();用於發送消息。調用方式與 connection.on();基本一致,都是通過方法名字符串加參數列表的形式。

剩下的就是與業務相關的前端頁面信息及邏輯了。
ps:connection的使用可以查看signalr.js代碼。

服務端與客戶端

服務端

命名空間爲Microsoft.AspNetCore.SignalR
通過繼承Hub類派生控制器類。通過IHubContext<xxxHub>實現依賴注入,無需使用全局單一實例。
使用Clients.User(userName)Clients.Group(groupName)進行用戶與組的控制。
使用Context.ConnectionId管理連接id。
使用自定義對象參數來確保向後兼容。

客戶端

命名空間Microsoft.AspNetCore.SignalR.Client
.Net客戶端。Java客戶端。JavaScript客戶端。

流式處理Stream

ASP.NET Core SignalR 支持從客戶端傳輸到服務器以及從服務器傳輸到客戶端。 這適用於數據片段隨着時間的推移而發生的情況。 流式傳輸時,每個片段一旦變爲可用,就會發送到客戶端或服務器,而不是等待所有數據都可用。
connection.stream。一般SignalR連接,使用connection.on來添加監聽器,但是在使用流式傳輸的時候,改用connection.stream方法。從使用效果來看,stream有點像是invoke與on的組合結果。通過invoke調用服務端方法,並接收對應的流數據。stream裏添加方法,closenextcompleteerror來應對各種需求。

https://www.cnblogs.com/lwqlun/p/9839305.html

配置文件

身份驗證和授權

MessagePack

日誌與診斷

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章