Tenho dois componentes que se comunicam via TCP / IP. O componente A atua como um servidor / ouvinte e o componente B é o cliente. Os dois devem se comunicar o mais rápido possível. Só pode haver uma conexão por vez (embora isso não seja parte dessa questão). Um desenvolvedor sênior da minha empresa disse que preciso usar pulsações no nível do aplicativo entre os dois componentes para garantir que a conexão permaneça aberta.
Achei que a conexão permanecesse aberta com TCP / IP, mas li vários blogs / sites dizendo que é uma prática padrão pulsar entre esses aplicativos.
Eu sei que parte da razão do componente A pulsar do componente B é para que ele possa informar o suporte se houver problemas de comunicação com o componente B (o link está inativo ou o componente B não está funcionando). Os batimentos cardíacos são necessários por algum outro motivo? Como garantir que sempre haja algo "no tubo" para mantê-lo aberto?
O componente A atualmente bate o componente B a cada 20 segundos e fecha a conexão se nada for recebido de volta do componente B em 120 segundos. Em seguida, ele retoma a escuta de conexões, supondo que o componente B tentará se reconectar periodicamente se o link for interrompido. Isso funciona com sucesso.
Para reiterar minha pergunta: as pulsações são necessárias para manter uma conexão TCP / IP ativa?