Вызов методов концентратора SignalR на стороне сервера

Я следовал этому руководству (https://blogs.msdn.microsoft.com/webdev/2018/02/27/asp-net-core-2-1-0-preview1-getting-started-with-signalr/), чтобы создать и запустить базовое приложение для чата.

Теперь мне нужно обновить клиентов с сервера. Другими словами, мне нужно иметь возможность вызывать серверную часть методов концентратора. Я нашел несколько примеров с использованием более старых версий SignalR/.NET, но ни один из них не хочет хорошо работать с ASP.NET Core 2.1.

Пожалуйста, может кто-нибудь помочь мне с указателем (или примером) того, как отправлять сообщения с сервера. Я думаю, что конкретный бит, который мне не хватает, заключается в том, как получить ссылку на активный концентратор из кода на стороне сервера, чтобы я мог вызывать его методы.

Кажется, что это должно быть просто, поэтому я, вероятно, упускаю что-то очевидное.

Спасибо, Ник.


person Nick Locke    schedule 12.05.2018    source источник


Ответы (1)


Методы концентратора предназначены для вызова клиентом.

На сервере вы вводите IHubContext<ChatHub> и получаете доступ к его свойствам Clients или Groups:

// Not hub method
public async Task Send(string message)
{
    await _chatHubContext.Clients.All.SendAsync("SendMessage", message);
}
person aaron    schedule 12.05.2018
comment
Да, но как делать инъекции? Это неуловимая часть. - person Corey; 03.10.2018