Avantage / inconvénient de l'utilisation de socketio heartbeats

Socket.io vous permet d'utiliser des battements cardiaques pour " vérifier la santé de Socket.IO connexions."Quels sont exactement les battements de cœur et pourquoi devrais ou ne devrais-je utiliser?

37
demandé sur jhchen 2011-08-15 07:07:16

1 réponses

Un battement de coeur est un petit message envoyé d'un client à un serveur (ou d'un serveur à un client et de nouveau au serveur) à des intervalles périodiques pour confirmer que le client est toujours là et actif.

Par exemple, si vous avez un Nœud.js app desservant une salle de chat, et un utilisateur ne dit rien pendant de nombreuses minutes, il n'y a aucun moyen de dire s'ils sont vraiment toujours connectés. En envoyant un hearbeat à un intervalle prédéterminé (disons, toutes les 15 secondes), le client informe le serveur qu'il est encore là. Si cela fait par exemple 20 secondes que le serveur a reçu un battement de coeur d'un client, il a probablement été déconnecté.

Ceci est nécessaire car vous ne pouvez pas garantir une terminaison de connexion propre sur TCP -Si un client se bloque, ou si quelque chose d'autre se produit, vous ne recevrez pas les paquets de terminaison du client, et le serveur ne saura pas que le client s'est déconnecté. En outre, Socket.IO prend en charge divers autres mécanismes (autres que les sockets TCP) pour transférer des données, et dans ces cas, le client ne sera pas (ou ne peut pas) envoyer un message de terminaison au serveur.

Par défaut, un Socket.IO le client enverra un battement de coeur au serveur toutes les 15 secondes (intervalle de battement de coeur ), et si le serveur n'a pas entendu du client dans 20 secondes (Délai de battement de coeur ) il considérera le client déconnecté.

Je ne peux pas penser à de nombreux cas d'utilisation moyens où vous ne voudriez probablement pas utiliser heartbeats.

53
répondu Michelle Tilley 2015-05-19 19:25:05