Depois que seu cliente se conectou ao servidor, às vezes a conexão pode ser fechada devido a sinal fraco, erros de conexão... há 2 propriedades que ajudam a manter a conexão ativa.
A propriedade HeartBeat permite que você envie um Ping a cada X segundos para manter a conexão ativa. Alguns servidores fecham conexões TCP se não houver dados trocados entre os peers. O HeartBeat resolve esse problema, enviando um ping a cada intervalo específico. Geralmente isso é suficiente para manter uma conexão ativa.
A propriedade HeartBeatType permite personalizar como o HeartBeat funciona:
1. hbtAlways: envia um ping a cada x segundos definidos em Interval.
2. hbtOnlyIfNoMsgRcvInterval: envia um ping a cada x segundos somente se nenhuma mensagem tiver sido recebida durante os últimos x segundos definidos na propriedade Interval.
Exemplo: envia um ping a cada 30 segundos
oClient := TsgcHTTP2Client.Create(nil);
oClient.HeartBeat.Interval := 30;
oClient.HeartBeat.Enabled := true;
oClient.Active := true;
Se o WatchDog estiver habilitado, quando o cliente detecta uma desconexão, o WatchDog tenta reconectar novamente a cada X segundos até que a conexão esteja ativa de novo.
Exemplo: reconecta a cada 10 segundos após uma desconexão com tentativas ilimitadas.
oClient := TsgcHTTP2Client.Create(nil);
oClient.WatchDog.Interval := 10;
oClient.WatchDog.Attempts := 0;
oClient.WatchDog.Enabled := true;
oClient.Active := true;