Signalr (1.0.0-alpha2) Hubs - Können Sie Client-Funktionen hinzufügen, nachdem die Verbindung gestartet wurde?

8

Mit Signalr (1.0.0-alpha2) möchte ich wissen, ob es möglich ist, Client-Funktionen nach dem Start einer Verbindung hinzuzufügen.

Sagen Sie, ich erstelle meine Verbindung und nehme den Proxy. Dann füge ich einige Server Fired Client-Funktionen zum Hub hinzu, um einige Dinge zu tun. Dann beginne ich meine Verbindung. Ich möchte dann noch mehr Server Fired-Funktionen zu meinem Hub-Objekt hinzufügen. Ist das möglich?

%Vor%

Dieses Beispiel ist nicht realistisch, aber ich möchte meine 'myHub'-Variable grundsätzlich an ein anderes Objekt senden, nachdem der Hub gestartet wurde, um neue Ereignisse zu abonnieren, die der ursprüngliche Code nicht interessiert.

Real Life Beispiel: Ein Dashboard mit einer Anzahl verschiedener Hub-Ereignisse (neue Site-Besuche, Chat-Nachricht, Site-Fehler). Ich "abonniere", nachdem die Verbindung gestartet wurde, und übergebe dann meinen Hub-Proxy an alle meine verschiedenen UI-Komponenten, um ihre spezifischen "Nachrichtentypen" zu behandeln. Sollte ich separate Hubs für diese erstellen oder sollte ich mehr Server Fired Client-Funktionen im laufenden Betrieb hinzufügen können?

    
ncyankee 21.11.2012, 16:12
quelle

2 Antworten

14

Ja, du kannst. Verwenden Sie die .on-Methode.

Beispiel:

%Vor%

Wenn Sie es später entfernen möchten, verwenden Sie die Methode .off.

    
N. Taylor Mullen 21.11.2012, 17:42
quelle
0

Ich habe genau die gleiche Situation. Vielleicht möchten Sie ein weiteres Abstraktionslayout hinzufügen, wenn Sie versuchen, es von mehreren Orten aus aufzurufen.

Hier ist eine vorläufige Version von dem, was ich gefunden habe (Typoskript).

Ich fange mit der Verwendung an. SignalRManager ist meine Manager-Klasse, die meinen debuggingHub Hub abstrahiert. Ich habe eine Client-Methode fooChanged , die auf dem Server ausgelöst wird.

Irgendwo in dem Modul, das SignalR benutzt, rufe ich einfach die Methode start auf, die nicht neu gestartet wird, wenn sie bereits gestartet wurde.

%Vor%

Ihr 'Modul' registriert seinen Rückruf einfach über die Manager-Klasse und wenn die SignalR-Client-Methode ausgelöst wird, wird Ihr Handler aufgerufen.

%Vor%

Dies ist eine einfache Version von SignalRManager , die jQuery $.Callbacks verwendet, um die Anfrage an so viele Module wie möglich weiterzuleiten. Natürlich könnten Sie jeden Mechanismus verwenden, den Sie wollten, aber das scheint der einfachste zu sein.

%Vor%

Hinweis: Unter Umständen ist zusätzliche Arbeit erforderlich, um Verbindungsabbrüche oder Verbindungsverluste zu beheben.

    
Simon_Weaver 28.05.2015 07:44
quelle

Tags und Links