【问题标题】:SignalR Asp Core hub injectionSignalR Asp Core 集线器注入
【发布时间】:2020-09-13 17:31:46
【问题描述】:

我可以通过执行以下操作将 signalR 集线器(ChatHub 派生自集线器)注入服务吗:

在 Startup.cs 中:

services.AddSingleton<ChatHub>();

注入另一个服务:

    public AnotherClass(ChatHub chatHub)(....

... chatHub.CallMethod(...

它的工作,但这是一个好主意? 我总是为此目的找到 IHubContext,但我为什么要使用它们呢?

【问题讨论】:

标签: asp.net-core signalr


【解决方案1】:

SignalR 希望为每条消息单独创建集线器。如果您希望集线器处于 DI 中,则需要将其添加为瞬态服务。您通常不应该将集线器从 DI 中解析出来。如果您需要在 Hub 和其他组件之间共享代码,我建议您使用 IHubContext 或将共享代码放在单独的 DI 服务中。

private IHubContext<ChatHub, IChatHub> ChatHub
{
    get
    {
        return this.serviceProvider.GetRequiredService<IHubContext<ChatHub, IChatHub>>();
    }
}

【讨论】:

    猜你喜欢
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-16
    • 1970-01-01
    相关资源
    最近更新 更多