54 votes

Quand une reconnexion dans signalR est-elle effectuée?

J'ai commencé à travailler avec SignalR et j'essayais de comprendre quand une reconnexion de hub avait lieu. Je n'ai trouvé aucune explication satisfaisante sur le Web. Quelqu'un peut-il expliquer quand / pourquoi une reconnexion a lieu?

85voto

N. Taylor Mullen Points 8174

Un hub reconnecter se produit lorsqu'un client se déconnecte, puis reprend la connectivité peu de temps après. SignalR les valeurs de configuration déterminent largement le temps de timbres des exemples suivants afin de ne pas prendre le temps de verbatim.

Voici plusieurs exemples et de leurs résultats (format de l'heure m:ss) impliquant la reconnexion comportement:

Quand je Mentionne ce qui suit, je me réfère à côté serveur Hub méthode - OnConnected
- OnDisconnected
- OnReconnected

1)
0:00 - le Client se connecte au serveur, OnConnected est déclenchée
0:10 - Client perd la connexion dû au FAI questions (et se rend compte qu'il perd la connexion)
0:15 - Client Retrouve la connectivité
0:16 - OnReconnected événement est déclenché

2)
0:00 - le Client se connecte au serveur, OnConnected est déclenchée
0:10 - Client perd la connexion en raison de tirant à câble ethernet (ne pas réaliser qu'il est déconnecté)
0:15 - Client Retrouve la connectivité
Deux choses peuvent se produire ici
A: 0:16 - Rien ne se passe et le client continue avec sa connexion précédente
B: 0:~45 - Client se rend compte de son déconnectés *
B: 0:46 - transitions de Client dans la reconnexion de l'état
B: 0:47 - Client se reconnecte et la OnReconnected événement est déclenché.

3)
0:00 - le Client se connecte au serveur, OnConnected est déclenchée
0:10 - Client perd la connexion en raison de tirant à câble ethernet (ne pas réaliser qu'il est déconnecté)
0:~45 - Client se rend compte de son déconnectés *
0:46 - transitions de Client dans la reconnexion de l'état
1:15 - Serveur détermine que le client a disparu depuis trop longtemps et puis les oublie ça, la queue d'un "déconnecter" de la commande pour le client de recevoir si elle se reconnecte un peu plus tard. ***
1:15 - OnDisconnected est déclenchée
1:16 - Client retrouve la connectivité
1:17 - Client à un "soft" se reconnecter (ne déclenche pas OnReconnected)
1:18 - Client récupère les "déconnecter" de la commande
1:19 - Client appelle "stop" et un soft de déconnexion (ne déclenche pas OnDisconnected)

4)
0:00 - le Client se connecte au serveur, OnConnected est déclenchée
0:10 - Client perd la connexion en raison de tirant à câble ethernet (ne pas réaliser qu'il est déconnecté)
0:~45 - Client se rend compte de son déconnectés *
0:46 - transitions de Client dans la reconnexion de l'état
1:15 - Serveur détermine que le client a disparu depuis trop longtemps et puis les oublie ça, la queue d'un "déconnecter" de la commande pour le client de recevoir si elle se reconnecte un peu plus tard. ***
1:15 - OnDisconnected est déclenchée
1:30 - Client arrête d'essayer de se reconnecter (essayé trop long) **
1:30 - transitions de Client en état déconnecté

* En raison de la côté client garder vivante vérifier: Utilisé pour déterminer si un client est hors ligne en raison du manque de conserver avie. Pas utilisé pour l'interrogation de transport

** En raison de la côté client délai de déconnexion: Utilisé pour déterminer quand un client a été de reconnecter depuis trop longtemps d'une période et les chances sont que le serveur a oublié sur le client au cours du temps

*** En raison de la déconnexion du serveur timeout: Utilisé pour déterminer quand un client doit être oublié. C'est une période de temps qui commence à accumuler une fois qu'une connexion est étiqueté comme mort sur le serveur. En fin de compte les files d'attente du serveur d'une commande de déconnexion, pour le sujet qui indique au client (si il se reconnecte) dont il a besoin pour commencer une nouvelle connexion. La commande va disparaître à partir du serveur lorsque le sujet est nettoyé.

Espérons que cette aide!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X