J'ai deux composants qui communiquent via TCP/IP. Le composant A fait office de serveur/auditeur et le composant B est le client. Les deux doivent communiquer aussi rapidement que possible. Il ne peut y avoir qu'une seule connexion à la fois (bien que cela soit accessoire à cette question). Un développeur senior de mon entreprise m'a dit que je devais utiliser des battements de cœur au niveau de l'application entre les deux composants pour m'assurer que la connexion reste ouverte.
Je pensais que la connexion restait ouverte avec TCP/IP mais j'ai lu un certain nombre de blogs/sites disant que c'est une pratique assez standard de battre le cœur entre ces applications.
Je sais qu'une partie de la raison pour laquelle le composant A bat le cœur du composant B est qu'il peut informer le support s'il y a des problèmes de communication avec le composant B (soit la liaison est en panne, soit le composant B ne fonctionne pas). Les battements de cœur sont-ils nécessaires pour d'autres raisons ? Par exemple, pour s'assurer qu'il y a fréquemment quelque chose "dans le tuyau" pour le maintenir ouvert ?
Actuellement, le composant A envoie des battements de cœur au composant B toutes les 20 secondes et ferme la connexion si rien n'est reçu en retour du composant B dans les 120 secondes. Il reprend ensuite l'écoute des connexions en partant du principe que le composant B essaiera périodiquement de se reconnecter si le lien est rompu. Cela fonctionne avec succès.
Pour réitérer ma question : Les battements de cœur sont-ils nécessaires pour maintenir une connexion TCP/IP en vie ?
1 votes
Ce comportement pourrait-il également dépendre de l'implémentation ? Est-il spécifié dans la norme TCP ou s'agit-il d'un détail de mise en œuvre ? J'espère que quelqu'un d'autre pourra répondre à cette question.
1 votes
Il s'agit d'un détail d'implémentation, car tous les protocoles basés sur TCP/IP n'implémentent pas ce genre de choses, c'est à vous de décider.
6 votes
Oui, pas à cause de TCP/IP, mais à cause d'autres matériels ou logiciels par lesquels votre connexion peut passer, comme les pare-feu et les routeurs domestiques qui ont tendance à supprimer les connexions TCP inactives : stackoverflow.com/questions/3907537/