如何从 Azure 服务总线事件处理程序访问 SignalR 连接

How to access SignalR connection from Azure Service Bus event handler

我在 .Net Core 2.1.4 WebAPI 中有一个服务总线事件处理程序侦听和处理事件。当它收到一个事件时,我希望它从有效负载中获取一个用户 ID,并向该用户的所有连接的 SignalR 客户端发送一条消息。

如何从服务总线处理程序访问 SignalR 连接?

事件处理程序

private async static Task ProcessMessagesAsync(Message message, CancellationToken token)
{
    var receivedObject = JsonConvert.DeserializeObject<MyType>(Encoding.UTF8.GetString(message.Body));

    await _repository.Add(receivedObject);

    // Send something to all SignalR connections for the user ID in receivedObject
}

您应该使用 IHostedService,而不是通过 Program.cs 连接您的事件侦听器。执行此操作后,您的 IHostedService 将被 DI 激活,您可以访问 IHubContext<AchievementsHub>.

我在此处向您发送了拉取请求。

https://github.com/gcsuk/Achievements/pull/1/files