Question

J'ai vu comment vous pouvez piéger un événement de déconnexion du côté client avec SignalR en se liant à l'événement .disconnect.

Maintenant que je l'ai fait, je veux mettre le client en « attente de cycle de Reconnect » où il essaie toujours de se connecter jusqu'à ce qu'il réussisse ou que l'utilisateur annule. Le centre expose une propriété d'état de connexion? Je pense quelque chose comme (pseudo code)

var isConnected;

function onConnected() { isConnected = true; }

hub.disconnect = function() { while(hub.notconnected) { connect(); }
Était-ce utile?

La solution

Les tentatives de client JS de reprendre contact pendant une certaine période de temps, ce qui par défaut à 110 secondes. Vous pouvez vous abonner à l'événement connection.stateChanged, et obtenir des mises à jour sur le moment où l'état change de sorte que vous pouvez l'afficher à l'utilisateur ou la réponse validate SignalR à différents scénarios de déconnexion.

Dans mes tests, l'état a été correctement mis à jour déconnecté et reconnectant etc., comme on peut s'y attendre.

Plus d'informations sur signalr connexions

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

Autres conseils

Le client essaie toujours de se connecter. Vous ne devez pas vous inquiéter à ce sujet. Il y a un événement reconnecté que vous pouvez écouter, si vous voulez faire quelque chose lorsque la connexion est rétablie avec succès.

EDIT: Cela a changé, le client essaie seulement de se reconnecter pendant une certaine période de temps. Après cela, vous devez attraper l'événement de déconnexion et redémarrer manuellement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top