.net core 3.0 Signalr - 02 使用強類型的Hub

強類型的優缺點

  • 優勢

強類型的Hub能夠避免魔法函數名,相比弱類型更容易維護和發現問題,直接上代碼git

  • 缺點

特麼的得多些好幾行代碼github

代碼

接口定義

/// <summary>
  /// 服務端接口
  /// </summary>
  public interface IServerNotifyHub
  {

  }

  /// <summary>
  /// 客戶端使用的接口
  /// </summary>
  public interface IClientNotifyHub
  {
      // 這裏咱們定義一個統一的客戶端通知方法
      Task OnNotify(object data);
  }

實現

  • 對以前的Hub進行修改,暫時就先經過OnNotify給當前全部客戶端推送一個信息
public class NotifyHub : Hub<IClientNotifyHub>,IServerNotifyHub
    {
        public override async Task OnConnectedAsync()
        {
            await Clients.All.OnNotify(new { ConnectId = Context.ConnectionId });
            await base.OnConnectedAsync();
        }
    }

在api中調用Hub推送

大部分狀況下,是經過客戶端某個操做,好比:將任務分配給張三,那麼在分配任務的這個api中會調用推送 推送給張三一個通知,xxx分配了一個任務給你,在Controller中注入強類型的Hub,代碼以下api

...
private readonly IHubContext<NotifyHub,IClientNotifyHub> _notifyHub;
public NotifyController(IHubContext<NotifyHub,IClientNotifyHub> notifyHub)
{
    _notifyHub = notifyHub;
}

至此,強類型的Hub介紹完畢,更多內容請經過快速導航查看下一篇async

快速導航

標題 內容
索引 .net core 3.0 Signalr - 實現一個業務推送系統
上一篇 .net core 3.0 Signalr - 01 基礎篇
下一篇 .net core 3.0 Signalr - 03 使用MessagePack壓縮傳輸內容
源碼地址 源碼
官方文檔 官方文檔

二維碼

相關文章
相關標籤/搜索