Używam SignalR do emisji wiadomości do wszystkich moich klientów. Muszę wyzwolić nadawanie poza moją klasą koncentratora, tj. Coś takiego jak poniżej:
var broadcast = new chatHub();
broadcast.Send("Admin","stop the chat");
Otrzymuję komunikat o błędzie jako:
Korzystanie z wystąpienia centrum, które nie zostało utworzone przez HubPipeline, nie jest obsługiwane.
signalr
signalr-hub
Nitin Agrawal
źródło
źródło
GetHubContext
nie ma dzwoniącego, ponieważ ma to być używane poza centrum.Clients.All
powinien odnosić się do każdego klienta, który jest aktualnie połączony z centrum.IHubContext
. Nie można tego użyć do wywołania metod centrum.context.Clients.All.broadcastMessage("Admin", "stop the chat");
użyj broadcastMessage zamiast Send.Mała aktualizacja dla tych, którzy mogą się zastanawiać, dokąd się
GlobalHost
podział. SignalR został całkowicie przepisany dla .net core. Więc jeśli używasz pakietu SignalR.Core ( różnica między wersjami SignalR ), otrzymasz wystąpienie kontekstu centrum SignalR przez wstrzyknięcie go do usługi:A w
Startup.cs
:Microsoft Docu jest tutaj: wysyłaj wiadomości SignalR spoza centrum .
źródło