Die Verwendung von Hub-Methoden, die vom controller?
Ich bin mit SignalR 2, und ich kann nicht herausfinden, wie ich meine Hub-Methoden e.g innerhalb einer controller-action.
Ich weiß, ich kann Folgendes tun:
var hub = GlobalHost.ConnectionManager.GetHubContext<T>();
hub.Clients.All.clientSideMethod(param);
Aber das führt die Methode direkt auf der client-Seite.
Was, wenn ich business-Logik in meinem server-Seite ClientSideMethod(param)
Methode, die ich nennen will von meinem controller die gleiche Weise, wie wenn es heißt von der client-Seite?
Im moment nutze ich public static void ClientSideMethod(param)
in meinem hub und in dieser Methode, die ich verwenden die IHubContext
von der ConnectionManager
.
Ist es nicht besser war, dies zu tun?
Folgendes funktioniert nicht (mehr in SignalR 2?):
var hubManager = new DefaultHubManager(GlobalHost.DependencyResolver);
instance = hubManager.ResolveHub(typeof(T).Name) as T;
instance.ClientSideMethod(param);
Dort bekomme ich einen "Hub nicht erstellt, über den Hub-pipeline nicht unterstützt" exception beim Zugriff auf die Clients.
InformationsquelleAutor der Frage ChrFin | 2013-07-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es könnte Arbeit zu schaffen, ein "helper" - Klasse, die Ihre business-Regeln und ist als beide Ihren Hub und Controller:
InformationsquelleAutor der Antwort michaelrp
Als ich habe nicht gefunden, eine "gute Lösung" ich bin mit @michael.rp-Lösung mit einigen Verbesserungen:
Habe ich erstellen Sie die folgende Basisklasse:
Und dann in den eigentlichen Hub (z.B.
public class AdminHub : Hub<AdminHub>
) ich habe eine (statische) Methoden, wie die folgenden:InformationsquelleAutor der Antwort ChrFin