Saya memiliki dua komponen yang berkomunikasi melalui TCP / IP. Komponen A bertindak sebagai server / pendengar dan Komponen B adalah klien. Keduanya harus berkomunikasi secepat mungkin. Hanya ada satu koneksi setiap saat (meskipun itu dikesampingkan untuk pertanyaan ini). Pengembang senior di perusahaan saya mengatakan bahwa saya perlu menggunakan detak jantung tingkat aplikasi antara dua komponen untuk memastikan koneksi tetap terbuka.
Saya pikir koneksi tetap terbuka dengan TCP / IP tetapi saya telah membaca sejumlah blog / situs yang mengatakan itu praktik standar yang cukup untuk detak jantung antara aplikasi ini.
Saya tahu sebagian alasan komponen A detak jantung komponen B adalah agar dapat menginformasikan dukungan jika ada masalah komunikasi dengan komponen B (baik tautan mati atau komponen B tidak berjalan). Apakah detak jantung diperlukan untuk alasan lain? Seperti untuk memastikan sering ada sesuatu "di dalam pipa" untuk membuatnya tetap terbuka?
Komponen A saat ini detak jantung komponen B setiap 20 detik dan menutup koneksi jika tidak ada yang diterima kembali dari komponen B dalam 120 detik. Kemudian melanjutkan mendengarkan koneksi dengan asumsi bahwa komponen B akan secara berkala mencoba menyambung kembali jika tautan rusak. Ini bekerja dengan sukses.
Untuk mengulangi pertanyaan saya: Apakah detak jantung diperlukan untuk menjaga koneksi TCP / IP tetap hidup?