Domanda

Ho visto come puoi intercettare un evento di disconnessione sul lato client con SignalR collegandoti all'evento .disconnect.

Ora che l'ho fatto, voglio mettere il client in un "ciclo di attesa per riconnettersi" in cui cerca continuamente di connettersi fino a quando non riesce o l'utente si annulla.L'hub espone una proprietà dello stato di connessione?Sto pensando qualcosa come (pseudo codice)

var isConnected;

function onConnected() { isConnected = true; }

hub.disconnect = function() { while(hub.notconnected) { connect(); }
È stato utile?

Soluzione

Il client JS tenta di riconnettersi per un certo periodo di tempo, che per impostazione predefinita è di 110 secondi.Puoi iscriverti all'evento connection.stateChanged e ricevere aggiornamenti su quando lo stato cambia in modo da poterlo visualizzare all'utente o convalidare la risposta di SignalR a diversi scenari di disconnessione.

Durante i miei test, lo stato è stato aggiornato correttamente per disconnesso e riconnessione, ecc., come ci si aspetterebbe.

Ulteriori informazioni su signalrconnessioni

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 });

Altri suggerimenti

Il client cerca sempre di connettersi.Non devi preoccuparti di questo. C'è un evento di riconnessione che puoi ascoltare, nel caso tu voglia fare qualcosa quando la connessione è stata ristabilita con successo.

EDIT: questo è cambiato, il client tenta di riconnettersi solo durante un certo periodo di tempo.Dopodiché, devi rilevare l'evento di disconnessione e riavviare manualmente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top