asp.net-core - 如何在控制器外部发送消息?
问题描述
我需要将信息发送到 HUB 外的连接客户端。
这是我的课:
public static class Notification{
public static void SendMessage(){
//... Do some stuff
MyHub.Clients.All.SendAsync("sendInfo");
}
}
如何实例化 HUB?
解决方案
据我所知,您可以使用 IHubContext 服务将服务消息发送到集线器之外。
如果您在 startup.cs 中的 ConfigureServices 中注册了服务,那么您可以通过依赖注入访问 IHubContext 的实例。
services.AddSignalR();
例如,在控制器中注入 IHubContext 的实例。
public class HomeController : Controller
{
private readonly IHubContext<NotificationHub> _hubContext;
public HomeController(IHubContext<NotificationHub> hubContext)
{
_hubContext = hubContext;
}
}
现在,通过访问 IHubContext 的实例,您可以调用中心方法,就好像您在中心本身中一样。
public async Task<IActionResult> Index()
{
await _hubContext.Clients.All.SendAsync("Notify", $"Home page loaded at: {DateTime.Now}");
return View();
}
更多细节,你可以参考这篇文章。
推荐阅读
- serialization - 为什么这个简单的 Arduino 草图会在短时间内变慢?
- python - 计算 1-6 个骰子的随机和及其概率
- python - Python 返回错误“用作索引的数组必须是整数(或布尔)类型”
- asp.net-core - 访问未经授权的子站点时获取浏览器登录窗口
- machine-learning - 如何改进 ResNet 的 PyTorch 实现以进行 CIFAR-10 分类?
- google-cloud-platform - 如何在 Google Cloud Platform CLI 中切换配置 - Cloud Shell
- python - 当列表中没有值时,list.count() 表示 1
- python - 在嵌套字典中添加项目
- c++ - 按唯一标识符描述数字列表
- php - PHP 仅将 SQL 拉为文本