У меня есть собственный проект webApi в настольном приложении C#. Это использует Microsoft.Owin.Hosting.WebApp.
У меня есть производный класс Hub, который имеет отправку и получение от клиента angular.
Концентратор создается файлом WebApp.start. Я считаю, что это недолго. Когда клиент отправляет сообщение, создается экземпляр концентратора, который затем удаляется. Мне нужно отправить сообщение клиенту, но у меня нет экземпляра концентратора для отправки сообщения в другом направлении.
В какой-то момент у меня была ссылка на экземпляр (как в случае утечки памяти), и я мог получить сообщение клиенту.
Клиент показывает как всегда подключен. Нет отключенных сообщений.
Что мне не хватает?





Вы не должны держать этот экземпляр в одиночестве и никогда не должны создавать экземпляр самостоятельно.
Подробнее о сроке службы концентратора onject читайте здесь: https://docs.microsoft.com/en-us/aspnet/signalr/overview/guide-to-the-api/hubs-api-guide-server#hub-object-lifetime
В случае, если вам нужно отправить сообщение подключенным клиентам, вам необходимо использовать GetHubContext.
Пример:
var context = GlobalHost.ConnectionManager.GetHubContext<yourHub>();
context.Clients.All.Send("Something");
(В случае, если вы используете основной сигнализатор, прочтите: Вызов метода SignalR Core Hub из контроллера)
довольно близко. Мне нужно добавить GlobalHost.DependencyResolver = ... Спасибо.