Ich benutze SignalR 2 und ich kann nicht herausfinden, wie ich meine Hub-Methoden verwenden kann, z. B. aus einer Controller-Aktion.Hub-Methoden vom Controller verwenden?
Ich weiß, ich kann folgendes tun:
var hub = GlobalHost.ConnectionManager.GetHubContext<T>();
hub.Clients.All.clientSideMethod(param);
Aber das führt das Verfahren direkt auf der Client-Seite.
Was passiert, wenn ich eine Geschäftslogik innerhalb meiner Server-Seite habe? ClientSideMethod(param)
Methode Ich möchte von meinem Controller auf die gleiche Weise wie von der Client-Seite aufgerufen werden?
Im Moment verwende ich public static void ClientSideMethod(param)
in meinem Hub und in dieser Methode verwende ich die IHubContext
aus der ConnectionManager
.
Gibt es keine bessere Möglichkeit, dies zu tun?
Die folgende funktioniert nicht (mehr in SignalR 2?):
var hubManager = new DefaultHubManager(GlobalHost.DependencyResolver);
instance = hubManager.ResolveHub(typeof(T).Name) as T;
instance.ClientSideMethod(param);
Es bekomme ich einen "Hub erstellt nicht über Hub-Pipeline nicht unterstützt" Ausnahme, wenn die Clients zugreifen.
Warum tun Sie es nicht aus dem Client, die ich davon ausgehen, JS, können Sie eine Ajax-Anfrage tun und tun, was Sie auf dem Controller – MEYWD
@MEYWD benötigen: Zum Beispiel habe ich eine Admin-Oberfläche, die ich aktualisieren möchte, wenn "etwas passiert". Z.B. Der Client besucht eine bestimmte Seite. Daher möchte ich die Hub-Methode in der Controller-Aktion von dieser Seite aus auslösen. Der eigentliche Kunde kümmert sich nicht darum, warum sollte er diese Nachricht posten? – ChrFin
Ich habe etwas ähnliches getan, ich habe Kunden und Admins (spezielle Client), der Admin einen Befehl senden und wartet auf die Antwort vom Client, um zu tun, dass ich eine Liste von Admins und eine Liste von Clients auf dem Hub, die admin wählt einen Client aus, reserviert ihn, so dass kein anderer Administrator ihn verwendet, sendet dann einen Befehl, der Hub gibt ihn an den Client weiter, der Client gibt die Antwort an den Hub zurück, der im Gegenzug an den Administrator weitergeleitet wird und auf den die Antwort gedruckt wird der Bildschirm – MEYWD