Получите HubContext извне Hub, используя библиотеку Aspnetcore.signalr (не из контроллера) - PullRequest
0 голосов
/ 30 мая 2018

Я разрабатываю сервис 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);
        }
    }

Ниже приведен еще один класс Context, который я создал для вызова метода концентратора на стороне клиента:

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.

Информация о сборке

1 Ответ

0 голосов
/ 01 июня 2018
var hubContext = app.ApplicationServices.GetService<IHubContext<Notification>>

Это решило мою проблему.

...