2013-07-28 32 views
15

Ich versuche, einen SignalR-Hub zu debuggen und bemerkte, dass der Konstruktor mehrmals aufgerufen wird, sogar mit einem einzigen Client. Ist das das erwartete Verhalten? Ich habe erwartet, dass der Konstruktor nur einmal zur Klasseninitialisierung aufgerufen wird, aber ich treffe meinen Haltepunkt mehrmals.Wann wird der SignalR-Hub-Konstruktor aufgerufen?

+0

nicht sicher, aber ich denke, es ist ein neues auf jede Anfrage – MEYWD

Antwort

17

In SignalR Hub-Instanz wird für jede Anfrage erstellt. Es spielt also keine Rolle, ob es nur einen oder mehrere Clients gibt. Tatsächlich ist Hub eine Abstraktion über PersistentConnection. Wenn Sie eine genauere Kontrolle über die Vorgänge hinter der Szene wünschen, können Sie PersistentConnection verwenden. Hier überprüfen: https://github.com/SignalR/SignalR/wiki/PersistentConnection

+2

Noch mehr als das. Einmal pro Aufruf, was mehr als pro Anfrage sein kann (im Fall von Websockets) – davidfowl

5

Wie Incognito richtig darauf hingewiesen, erstellt SignalR eine neue Instanz des Hubs für jede Anfrage. Sie sollten statische Elemente verwenden, um die gewünschten Informationen für alle Anforderungen im Hub zu speichern. Wenn Sie jedes Mal, wenn ein neuer Client eine Verbindung zum Hub herstellt, einige Operationen ausführen möchten, sollten Sie diesen Code in OnConnected einfügen.

Verwandte Themen