Я разрабатываю службу SignalR с использованием AspNetCore.SignalR.
Ниже мой хаб:
public class NotificationHub : Microsoft.AspNetCore.SignalR.Hub
{
public override async Task OnConnectedAsync()
{
await base.OnConnectedAsync();
}
public override async Task OnDisconnectedAsync(Exception exception)
{
await base.OnDisconnectedAsync(exception);
}
}
Ниже приведен еще один класс контекста, который я создал для вызова метода Hub на стороне клиента:
public class NotificationHubContext
{
private readonly IHubContext<NotificationHub> _context;
public NotificationHubContext(IHubContext<NotificationHub> context)
{
_context = context;
}
public async Task Broadcast(string groupId, string eventName, object data)
{
await _context.Clients.Group(groupId).SendAsync(eventName, data);
}
}
Я хотел бы внедрить ссылку на класс NotificationContext в свой собственный контейнер IoC, чтобы я мог просто разрешить его и вызвать для него метод BroadCast, и он должен обрабатывать отправку сообщений клиентам.
Я использую служебную шину для прослушивания сообщений из другой части системы. Как только я получаю сообщение из очереди, я хочу уведомить подключенных клиентов с помощью HubContext из QueueHandler.