Я использую SignalR в версии 2.1.2. Я заметил, что для меня есть два общедоступных класса хаба: Hub
и Hub<T>
. Первая имеет страницу MSDN, которая, как представляется, устарела, а вторая вообще не имеет какой-либо страницы MSDN. Я считаю, что документация MSDN не обновляется с последней версией SignalR из Nuget (которую я использую), потому что источники, декомпилированные с помощью ReSharper, показывают, что оба класса наследуют базовый класс HubBase
. Данная страница MSDN по иерархии наследования раздел показывает Hub
класса как унаследовав от Object
и реализаций IHub
и IDisposable
интерфейсов, однако декомпилированные источники показывают вышеупомянутый HubBase
базовый класс, реализующий интерфейс IHub
, который в своей очереди реализует IDisposable
.Как использовать общий концентратор в SignalR
Разница между необщим и общим вариантом классов является то, что необщим своим Clients
свойства возвращает IHubCallerConnectionContext<dynamic>
в то время как общий вариант возвращение напечатало IHubCallerConnectionContext<T>
.
Я бы хотел, чтобы мои клиенты набрали, поэтому, когда я вызываю клиентские методы из концентратора, у меня будет правильная поддержка Intellisense и строго типизированные аргументы. Однако я борюсь с тем, как позволить хабу знать, что метод моей модели клиента действительно вызывается в браузере.
Это мой TestModel
класс:
public sealed class TestModel
{
public String Name { get; set; }
public void Notify() {}
public void NotifyComplex(TestModel model) {}
}
С необщей ступицей, я бы просто позвонить .Notify()
или .Notify(new TestModel() { Name = "sth" })
на dynamic
LY связанной this.Context.Clients.Client(…)
или this.Context.Caller
, но с общим классом, когда я называю эти пустые методы аналогичным образом, браузер не уведомляется вообще.
Как вы используете общий класс концентратора так, как он предполагается использовать?
это может быть полезно: http://stackoverflow.com/a/21763587/526704 – DLeh
Боюсь, этот вопрос не имеет никакого отношения. Я заинтересован в вызове методов клиента с сервера, а не наоборот, что делает OP этого вопроса и методы, которые я хочу вызывать с помощью RPC, не являются общими, но это хаб. клиентов. Однако я ценю этот комментарий. –
Я не был уверен, будет ли это полезно или нет, но я думал, что предоставил бы то, что нашел. извините, у меня нет другой полезной проницательности :( – DLeh