TCP / IPを介して通信する2つのコンポーネントがあります。コンポーネントAはサーバー/リスナーとして機能し、コンポーネントBはクライアントです。2つはできるだけ早く通信する必要があります。接続は常に1つしかありません(ただし、この質問は別です)。私の会社の上級開発者は、接続を確実に開いたままにするために、2つのコンポーネント間でアプリケーションレベルのハートビートを使用する必要があると述べています。
TCP / IPでも接続は開いたままであると思っていましたが、これらのアプリケーション間でハートビートを行うのはかなり標準的な方法であると多くのブログ/サイトを読んだことがあります。
コンポーネントAがコンポーネントBをハートビートする理由の一部を知っているので、コンポーネントBとの通信問題(リンクがダウンしているか、コンポーネントBが実行されていない)がある場合にサポートに通知できます。他の理由でハートビートが必要ですか?たとえば、「パイプの中に」何かを頻繁に開いておくためにそれを確実にするために?
現在、コンポーネントAはコンポーネントBを20秒ごとにハートビートし、120秒以内にコンポーネントBから何も受信されない場合は接続を閉じます。次に、リンクが切断された場合にコンポーネントBが定期的に再接続を試行すると想定して、接続のリスニングを再開します。これは正常に動作します。
私の質問を繰り返します:TCP / IP接続を維持するためにハートビートは必要ですか?