Я использую SignalR 2, и я не могу понять, как я могу использовать методы Hub, например, изнутри действия контроллера.
Я знаю, что могу сделать следующее:
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);
Там, где я получаю доступ к Клиентам, я получаю исключение "Концентратор, не созданный по конвейеру конвейера не поддерживается".