SignalR中其他类如何引用Clients

使用SignalR, 一般做法是新建一个自定义hub继承 SignalR提供的Hub,代码类似于

public class MyHub:Hub
{

}

那么发送信息、接受信息等基本是用父类提供的Clients完成操作,而且只能在MyHub类里完成操作,如果要在外部类使用Clients又该怎么做呢?答案很简单,使用 IHubContext<T>,比如新年到了,要给所有在线用户推送一条新年快乐的祝福,就可以这样写

public class HomeController
{
  private IHubContext<MyHub> _hub;
  public HomeController(IHubContext<MyHub> hub)
  {
    _hub = hub;
  }

  public async Task<IActionResult> 拜年()
  {
    await _hub.Clients.All.SendAsync("receive","新年快乐");
    return Content("发送成功");
  }
}