Ich habe zwei Komponenten, die über TCP / IP kommunizieren. Komponente A fungiert als Server / Listener und Komponente B ist der Client. Die beiden sollten so schnell wie möglich kommunizieren. Es kann immer nur eine Verbindung geben (obwohl dies abgesehen von dieser Frage ist). Ein leitender Entwickler in meinem Unternehmen hat erklärt, dass ich Herzschläge auf Anwendungsebene zwischen den beiden Komponenten verwenden muss, um sicherzustellen, dass die Verbindung offen bleibt.
Ich dachte, die Verbindung mit TCP / IP bleibt offen, aber ich habe eine Reihe von Blogs / Websites gelesen, die besagen, dass es ziemlich üblich ist, zwischen diesen Anwendungen zu schlagen.
Ich kenne einen Teil des Grundes, warum Komponente A Heartbeat-Komponente B ist, damit sie den Support informieren kann, wenn Kommunikationsprobleme mit Komponente B auftreten (entweder ist die Verbindung unterbrochen oder Komponente B läuft nicht). Werden Herzschläge aus einem anderen Grund benötigt? Um sicherzustellen, dass häufig etwas "im Rohr" ist, um es offen zu halten?
Komponente A schlägt derzeit alle 20 Sekunden einen Herzschlag auf Komponente B und schließt die Verbindung, wenn innerhalb von 120 Sekunden nichts von Komponente B zurück empfangen wird. Anschließend wird das Abhören von Verbindungen unter der Annahme fortgesetzt, dass Komponente B regelmäßig versucht, eine erneute Verbindung herzustellen, wenn die Verbindung unterbrochen wird. Dies funktioniert erfolgreich.
Um meine Frage zu wiederholen: Sind Herzschläge erforderlich, um eine TCP / IP-Verbindung aufrechtzuerhalten?