Ho due componenti che comunicano tramite TCP / IP. Il componente A funge da server / ascoltatore e il componente B è il client. I due dovrebbero comunicare il più rapidamente possibile. Ci può essere solo una connessione in qualsiasi momento (anche se questo è a parte questa domanda). Uno sviluppatore senior della mia azienda ha affermato che è necessario utilizzare heartbeat a livello di applicazione tra i due componenti per garantire che la connessione rimanga aperta.
Pensavo che la connessione rimanesse aperta con TCP / IP, ma ho letto un certo numero di blog / siti che dicono che è una pratica abbastanza standard battere il cuore tra queste applicazioni.
Conosco parte del motivo per cui il componente A batte il componente B in modo che possa informare il supporto se ci sono problemi di comunicazione con il componente B (il collegamento è inattivo o il componente B non è in esecuzione). I battiti cardiaci sono necessari per altri motivi? Come garantire che spesso ci sia qualcosa "nel tubo" per tenerlo aperto?
Il componente A attualmente batte il componente B ogni 20 secondi e chiude la connessione se non viene ricevuto nulla dal componente B entro 120 secondi. Quindi riprende ad ascoltare le connessioni presumendo che il componente B proverà periodicamente a riconnettersi se il collegamento è interrotto. Funziona con successo.
Per ribadire la mia domanda: gli heartbeat sono necessari per mantenere attiva una connessione TCP / IP?