Frage

Ich habe gesehen, wie Sie ein Trennungsereignis auf der Clientseite mit SignalR abfangen können, indem Sie an das Ereignis .disconnect binden.

Nachdem ich dies getan habe, möchte ich den Client in einen "Warten auf Wiederverbindungszyklus" versetzen, in dem er kontinuierlich versucht, eine Verbindung herzustellen, bis dies erfolgreich ist oder der Benutzer abbricht.Macht der Hub eine Verbindungsstatuseigenschaft verfügbar?Ich denke so etwas wie (Pseudocode)

var isConnected;

function onConnected() { isConnected = true; }

hub.disconnect = function() { while(hub.notconnected) { connect(); }

War es hilfreich?

Lösung

Der JS-Client versucht, die Verbindung für einen bestimmten Zeitraum wiederherzustellen, der standardmäßig 110 Sekunden beträgt.Sie können das Ereignis connection.stateChanged abonnieren und Aktualisierungen erhalten, wenn sich der Status ändert, damit Sie es dem Benutzer anzeigen oder die Reaktion von SignalR auf verschiedene Trennungsszenarien überprüfen können.

In meinen Tests wurde der Status korrekt aktualisiert, um die Verbindung zu trennen und wieder herzustellen usw., wie Sie es erwarten würden.

Weitere Informationen zu signalrVerbindungen

function connectionStateChanged(state) {
    var stateConversion = {0: 'connecting', 1: 'connected', 2: 'reconnecting', 4: 'disconnected'};
    console.log('SignalR state changed from: ' + stateConversion[state.oldState]
     + ' to: ' + stateConversion[state.newState]);
}

connection = $.connection(signalR_Endpoint);
connection.stateChanged(connectionStateChanged);
connection.start({ waitForPageLoad: false });

Andere Tipps

Der Client versucht immer, eine Verbindung herzustellen.Darüber müssen Sie sich keine Sorgen machen. Es gibt ein erneut verbundenes Ereignis, das Sie abhören können, falls Sie etwas tun möchten, wenn die Verbindung erfolgreich wiederhergestellt wurde.

BEARBEITEN: Dies hat sich geändert. Der Client versucht nur während eines bestimmten Zeitraums, die Verbindung wiederherzustellen.Danach müssen Sie das Trennungsereignis abfangen und manuell neu starten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top