asp.net-core - SignalR Asp Core 集线器注入
问题描述
我可以通过执行以下操作将 signalR 集线器(ChatHub 派生自集线器)注入服务:
在 Startup.cs 中:
services.AddSingleton<ChatHub>();
注入另一个服务:
public AnotherClass(ChatHub chatHub)(....
... chatHub.CallMethod(...
它的工作,但这是一个好主意?我总是为此目的找到 IHubContext,但我为什么要使用它们呢?
解决方案
SignalR 期望为每条消息单独创建集线器。如果您希望集线器处于 DI 中,则需要将其添加为瞬态服务。您通常不应该将集线器从 DI 中解析出来。如果您需要在 Hub 和其他一些组件之间共享代码,我建议使用 IHubContext 或将共享代码放在单独的 DI 服务中。
private IHubContext<ChatHub, IChatHub> ChatHub
{
get
{
return this.serviceProvider.GetRequiredService<IHubContext<ChatHub, IChatHub>>();
}
}
推荐阅读
- angular - 如何在 HTML 表格/列表中显示 JSON 数据
- r - abline 在箱线图中仅在画布上
- python - Facebook Graph API在开发模式下获取页面评论的用户ID
- javascript - 如何通过在 JSTree 中选择父节点将完整节点(父节点和子节点)从一棵树移动到另一棵树?
- python - Spyder中F5和F9导入包的不同行为
- flutter - 在颤动中将图标保存到共享首选项
- python - 在 python 中使用响应时,我无法从网站获得任何响应。我收到超时错误 10060
- node.js - RequestError:错误:getaddrinfo ENOTFOUND,不适用于所有用户
- rxjs - 如何等待多个订阅?
- c# - 我无法将 IRestresponse 转换为对象。我错过了什么?