乐趣区

net-core-30-Signalr-02-使用强类型的Hub

强类型的优缺点

  • 优点

强类型的 Hub 可以避免魔法函数名,相比弱类型更容易维护和发现问题,直接上代码

  • 缺点

特么的得多些好几行代码

代码

接口定义

  /// <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,代码如下

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

至此,强类型的 Hub 介绍完毕,更多内容请通过快速导航查看下一篇

快速导航

标题 内容
索引 .net core 3.0 Signalr – 实现一个业务推送系统
上一篇 .net core 3.0 Signalr – 01 基础篇
下一篇 .net core 3.0 Signalr – 03 使用 MessagePack 压缩传输内容
源码地址 源码
官方文档 官方文档

退出移动版