因為將signalr作為單獨的站點,此處需要建立兩個專案,一個專門用于signalr作為推送專案,一個客戶端(實際的業務專案)
基礎知識速覽
Clients物件屬性
| 屬性 | 描述 |
|---|---|
| All | 在所有連接的客戶端上呼叫方法 |
| Caller | 在呼叫集線器方法的客戶端上呼叫方法 |
| Others | 除當前連接外的所有連接 |
Clients物件方法
| 方法 | 描述 |
|---|---|
| AllExcept | 在所有連接的客戶端(指定的連接除外)上呼叫方法 |
| Client | 在特定連接的客戶端上呼叫方法(單個) |
| Clients | 在特定連接的客戶端上呼叫方法(多個) |
| Group | 對指定組中的所有連接呼叫方法 |
| GroupExcept | 對指定組中的所有連接呼叫方法,指定的連接除外 |
| Groups | 在多組連接上呼叫方法 |
| OthersInGroup | 對一組連接呼叫方法,而不包括呼叫該集線器方法的客戶端 |
| User | 對與特定用戶關聯的所有連接呼叫方法 |
| Users | 對與指定用戶相關聯的所有連接呼叫方法 |
Signalr推送端
-
通過命令列或者vs 2019新建.netcore web專案,選擇.net core 3.0、webapi
-
建立一個Hub
public class NotifyHub : Hub { } -
修改Startup中的ConfigServices方法,注冊對應的服務
// 添加Signalr services.AddSignalR(config => { // _webEnv為通過依賴注入在Startup的建構式中注入的 IWebHostEnvironment if (_webEnv.IsDevelopment()) { config.EnableDetailedErrors = true; } }); -
修改Configure配置HTTP請求的管道
... app.UseRouting(); app.UseEndpoints(endpoints =>{ endpoints.MapHub<NotifyHub>("/notify-hub"); });
業務端
相關檔案
- 創建連接物件
var connection=new signalR.HubConnectionBuilder() .configureLogging(signalR.LogLevel.Error) // 前端控制臺的日志級別,根據需要配置 .withUrl('http://localhost:50001/notify-hub') // 連接地址,這個地址是signalr專案的地址 .withAutomaticReconnect([0, 2000, 5000, 10000, 20000]) // 配置重連的時間 .build(); // 重連的時候觸發 connection.onreconnecting(function (info) { console.info('----------------------------------signalr-- onreconnecting', info); }); //連接關閉的回呼 connection.onclose(function (err) { console.info('--------------------------------signalr-- onclose', err); }); connection.start().then(function (data) { console.log('已成功連接到signalr服務器') }).catch(function (error) { console.error(error.toString()); });
更多內容請通過快速導航查看下一篇
快速導航
| 標題 | 內容 |
|---|---|
| 索引 | .net core 3.0 Signalr - 實作一個業務推送系統 |
| 下一篇 | .net core 3.0 Signalr - 02 使用強型別的Hub |
| 原始碼地址 | 原始碼 |
| 官方檔案 | 官方檔案 |

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/110614.html
標籤:.NET Core
