Ich verwende SignalR, um Nachrichten an alle meine Kunden zu senden. Ich muss die Übertragung außerhalb meiner Hub-Klasse auslösen, dh wie folgt:
var broadcast = new chatHub();
broadcast.Send("Admin","stop the chat");
Ich erhalte die Fehlermeldung:
Die Verwendung einer Hub-Instanz, die nicht von HubPipeline erstellt wurde, wird nicht unterstützt.
signalr
signalr-hub
Nitin Agrawal
quelle
quelle
GetHubContext
gibt es keinen Anrufer, da dieser außerhalb eines Hubs verwendet werden soll.Clients.All
sollte jeden Client ansprechen, der derzeit mit dem Hub verbunden ist.IHubContext
. Sie können dies nicht zum Aufrufen von Hub-Methoden verwenden.context.Clients.All.broadcastMessage("Admin", "stop the chat");
Verwenden Sie BroadcastMessage anstelle von Senden.Ein kleines Update für diejenigen, die sich fragen, wohin das
GlobalHost
gegangen ist. SignalR wurde für .net Core komplett neu geschrieben. Wenn Sie also das SignalR.Core-Paket ( Unterschied zwischen SignalR-Versionen ) verwenden, erhalten Sie eine Instanz des SignalR-Hub-Kontexts, indem Sie ihn in Ihren Dienst einfügen:Und in
Startup.cs
:Microsoft- Dokument ist hier: Senden Sie SignalR-Nachrichten von außerhalb des Hubs .
quelle