Ich benutze SignalR in Version 2.1.2. Ich habe bemerkt, dass es zwei öffentliche Hub-Klassen für mich gibt, Hub
und Hub<T>
. Ersteres hat eine MSDN-Seite, die veraltet zu sein scheint, und letztere fehlt überhaupt eine MSDN-Seite. Ich glaube, dass die MSDN-Dokumentation nicht mit der neuesten Version von SignalR von Nuget (die ich verwende) aktualisiert wird, da Quellen, die mit Hilfe von ReSharper dekompiliert wurden, beide Klassen von der Basisklasse HubBase
erben. Der Abschnitt Vererbungshierarchie der MSDN-Seite zeigt die Hub
Klasse von Object
vererben und IHub
und IDisposable
Schnittstellen Implementierung jedoch die dekompilierten Quellen offenbaren die oben genannten HubBase
Basisklasse, die Umsetzung der IHub
Schnittstelle, die wiederum IDisposable
implementiert.Wie generische Hub in SignalR zu verwenden
Die Differenz zwischen der Nicht-Generika und Generika Variante der Klassen ist, dass der nicht-generic jemandes Clients
Eigenschaft gibt IHubCallerConnectionContext<dynamic>
während die generische Variante kehrt IHubCallerConnectionContext<T>
eingegeben hat.
Ich möchte meine Clients eingegeben haben, also wenn ich die Client-Methoden vom Hub aufrufen, würde ich richtige Intellisense-Unterstützung und stark typisierte Argumente haben. Was ich jedoch damit zu tun habe, ist, wie ich dem Hub mitteilen kann, dass die Methode meines Client-Modells tatsächlich im Browser aufgerufen werden soll.
Das ist meine TestModel
Klasse ist:
public sealed class TestModel
{
public String Name { get; set; }
public void Notify() {}
public void NotifyComplex(TestModel model) {}
}
Mit dem nicht-generic-Hub, würde ich rufe Sie einfach .Notify()
oder .Notify(new TestModel() { Name = "sth" })
am dynamic
ly gebunden this.Context.Clients.Client(…)
oder this.Context.Caller
, aber mit der allgemeinen Klasse, wenn ich rufe Bei diesen leeren Methoden wird der Browser in ähnlicher Weise überhaupt nicht benachrichtigt.
Wie verwenden Sie die generische Hub-Klasse so, wie sie verwendet werden soll?
könnte dies nützlich sein: http://stackoverflow.com/a/21763587/526704 – DLeh
Ich fürchte, die Frage nichts zu tun hat. Ich bin daran interessiert, Client-Methoden vom Server aufzurufen, nicht umgekehrt, was das OP dieser Frage tut und die Methoden, die ich mit RPC aufrufen möchte, sind nicht generisch, der Hub ist es aber, und so ist es auch Kunden. Ich schätze den Kommentar jedoch. –
Ich war mir nicht sicher, ob es hilfreich wäre oder nicht, aber ich dachte, ich würde liefern, was ich gefunden habe. Entschuldigung, ich habe keinen anderen nützlichen Einblick :( – DLeh