2014-01-11 3 views
5

Мне интересно, можно ли отличить результат от var hub = GlobalHost.ConnectionManager.GetHubContext<ChatHub>(); В мой фактический класс ChatHub. Поскольку GlobalHost.ConnectionManager.GetHubContext<ChatHub>() as ChatHub терпит неудачуSignalr cast IHubContext для фактического концентратора

В моем классе ChatHub У меня есть метод UpdateTime():

public void SendTimeUpdate(DateTime time, string auth) 
{ 
    Clients.All.UpdateTime(time, auth); 
} 

И я хочу, чтобы назвать это из другого класса. Так как я не могу бросить в ChatHub и вызвать SendUpdate я должен идти:

GlobalHost.ConnectionManager.GetHubContext<ChatHub>().Clients.All.UpdateTime(time, auth); 

Но если я иду по этой дороге, метод SendTimeUpdate не добавляется в прокси-скрипт/signalr/концентраторы

Есть ли решение этой проблемы? Я хочу получить типизированный экземпляр Hub и не вызывать материал непосредственно в свойстве «Клиенты» IHubContext.

+0

Таким образом, метод 'UpdateTime' должен быть определен в вашем коде клиента. Не могли бы вы разместить любой javascript, который у вас есть? – mrtig

ответ

1

Нет, вы не можете наложить результат ....GetHubContext<.... на свой класс концентратора. К сожалению :(.

подход GetHubContext возвращает IHubContext, когда концентратор только IHub.

Если вы хотите, чтобы централизовать логику просто сделать метод, который вы можете позвонить в из хаба и от вашего внешняя служба

1

Не мог ли ваш класс просто создать соединение с вашим концентратором и вызвать метод таким образом?

+0

Хм, да, это будет работать, но не похоже на лучшую практику. – user1613512

 Смежные вопросы

  • Нет связанных вопросов^_^