Я использую SignalR 2 и не могу понять, как я могу использовать методы концентратора, например, из действия контроллера.
Я знаю, что могу сделать следующее:
var hub = GlobalHost.ConnectionManager.GetHubContext<T>();
hub.Clients.All.clientSideMethod(param);
Но это выполняет метод непосредственно на стороне клиента.
Что, если у меня есть бизнес-логика внутри моего метода ClientSideMethod(param)
на стороне сервера, который я хочу вызывать из моего контроллера так же, как когда он вызывается со стороны клиента?
На данный момент я использую public static void ClientSideMethod(param)
внутри своего хаба, и в этом методе я использую IHubContext
из ConnectionManager
.
Разве нет лучшего способа сделать это?
Следующее не работает (уже в SignalR 2?):
var hubManager = new DefaultHubManager(GlobalHost.DependencyResolver);
instance = hubManager.ResolveHub(typeof(T).Name) as T;
instance.ClientSideMethod(param);
Там я получаю исключение «Концентратор, не созданный через конвейер концентратора, не поддерживаемый» при доступе к клиентам.