Signalr lançou IHubContext para Hub real
-
02-01-2020 - |
Pergunta
Gostaria de saber se é possível transmitir o resultado devar hub = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();
Para minha aula real do ChatHub.Porque GlobalHost.ConnectionManager.GetHubContext<ChatHub>() as ChatHub
falhar
Na minha classe ChatHub eu tenho um método UpdateTime():
public void SendTimeUpdate(DateTime time, string auth)
{
Clients.All.UpdateTime(time, auth);
}
E quero ligar da minha outra turma.Como não consigo transmitir para o ChatHub e invocar o SendUpdate, preciso ir:
GlobalHost.ConnectionManager.GetHubContext<ChatHub>().Clients.All.UpdateTime(time, auth);
Mas se eu seguir esse caminho, o método SendTimeUpdate não será adicionado no script proxy /signalr/hubs
Existe uma solução para este problema?Quero obter a instância do Hub digitada e não chamar coisas diretamente na propriedade Clients do IHubContext.
Solução
Não, você não pode lançar o resultado de ....GetHubContext<....
para sua classe de hub.Desculpe :(.
A abordagem GetHubContext retorna um IHubContext
quando um Hub é apenas um IHub
.
Se você quiser centralizar a lógica, basta criar um método que você possa chamar do seu hub e do seu serviço externo.
Outras dicas
Sua classe não poderia simplesmente criar uma conexão com seu hub e chamar o método dessa forma?