如何从Azure Service Bus事件处理程序访问SignalR连接

时间:2018-09-23 22:03:21

标签: azure azureservicebus asp.net-core-signalr

我在.Net Core 2.1.4 WebAPI中有一个Service Bus事件处理程序,用于侦听和处理事件。当它接收到一个事件时,我希望它从有效负载中获取一个用户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
}

1 个答案:

答案 0 :(得分:1)

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

我在这里向您发送了拉取请求。

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