У мене є два компоненти, які взаємодіють через TCP / IP. Компонент А діє як сервер / прослуховувач, а Компонент Б - клієнт. Їм слід спілкуватися якомога швидше. Будь-коли може бути лише один зв’язок у будь-який час (хоча це питання осторонь цього питання). Старший розробник моєї компанії сказав, що мені потрібно використовувати серцебиття на рівні додатків між двома компонентами, щоб забезпечити відкрите з’єднання.
Я думав, що зв’язок залишається відкритим за допомогою протоколу TCP / IP, але я прочитав низку блогів / сайтів, де сказано, що це досить стандартна практика серцебиття між цими програмами.
Я знаю частину причини компонента A серцебиття компонента B, тому він може інформувати службу підтримки, якщо виникають проблеми з комунікацією з компонентом B (або посилання не працює, або компонент B не працює). Чи потрібні серцебиття з інших причин? Такі, щоб переконатися, що часто є щось "у трубі", щоб тримати її відкритою?
Компонент A в даний час серцебиває компонент B кожні 20 секунд і замикає з'єднання, якщо нічого не отримано від компонента B за 120 секунд. Потім він відновлює прослуховування з’єднань, припускаючи, що компонент B періодично намагатиметься повторно під’єднатися, якщо посилання обірвано. Це працює успішно.
Ще раз повторю своє запитання: чи необхідні серцебиття, щоб підтримувати зв’язок TCP / IP?