Signalr приводит IHubContext к фактическому концентратору

мне интересно, можно ли привести результат var hub = GlobalHost.ConnectionManager.GetHubContext<ChatHub>(); К моему настоящему классу Чатуба. Потому что GlobalHost.ConnectionManager.GetHubContext<ChatHub>() as ChatHub не

в моем классе 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 / hubs

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

2 ответов


нет, вы не можете привести результат ....GetHubContext<.... к вашему классу концентратора. Огорченный.(:

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

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


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