У меня есть два компонента, которые обмениваются данными через TCP / IP. Компонент A действует как сервер / слушатель, а компонент B - как клиент. Двое должны общаться как можно быстрее. В любой момент времени может быть только одно соединение (хотя это не относится к этому вопросу). Старший разработчик в моей компании сказал, что мне нужно использовать тактовые импульсы на уровне приложения между двумя компонентами, чтобы соединение оставалось открытым.
Я думал, что соединение с TCP / IP остается открытым, но я читал несколько блогов / сайтов, в которых говорится, что это довольно стандартная практика - тактика между этими приложениями.
Я знаю, что отчасти причина, по которой компонент A пульсирует, компонент B, так что он может сообщить службе поддержки, если есть проблемы со связью с компонентом B (либо канал не работает, либо компонент B не работает). Нужны ли сердцебиения по какой-либо другой причине? Например, чтобы убедиться, что «в трубе» часто есть что-то, что удерживает ее открытой?
Компонент A в настоящее время передает тактовый сигнал компоненту B каждые 20 секунд и закрывает соединение, если в течение 120 секунд от компонента B ничего не получено. Затем он возобновляет прослушивание соединений, предполагая, что компонент B будет периодически пытаться восстановить соединение, если связь разорвана. Это успешно работает.
Повторяю свой вопрос: необходимо ли сердцебиение для поддержания соединения TCP / IP?