TsgcWebSocketClient | İstemci Bağlantıyı Açık Tutma

İstemciniz bir sunucuya bağlandıktan sonra, bazen bağlantı zayıf sinyal, bağlantı hataları vb. nedeniyle kapanabilir. Bağlantıyı etkin tutmaya yardımcı olan 2 özellik vardır.

 

HeartBeat

HeartBeat özelliği, bağlantıyı canlı tutmak için her X saniyede bir Ping göndermenize olanak tanır. Bazı sunucular, eşler arasında veri değiş tokuşu yoksa TCP bağlantılarını kapatır. HeartBeat, belirli bir aralıkta bir ping göndererek bu sorunu çözer. Genellikle bu, bir bağlantıyı etkin tutmak için yeterlidir, ancak sunucudan X saniye sonra bir yanıt alınmadığında bağlantıyı kapatmak isterseniz bir TimeOut aralığı ayarlayabilirsiniz.

 

Örnek: her 30 saniyede bir ping gönderin


oClient := TsgcWebSocketClient.Create(nil);
oClient.HeartBeat.Interval := 30;
oClient.HeartBeat.Timeout := 0;
oClient.HeartBeat.Enabled := true;
oClient.Active := true;

HeartBeat davranışını özelleştirmenize olanak tanıyan OnBeforeHeartBeat adlı bir olay vardır. Varsayılan olarak, HeartBeat etkinleştirilmişse, istemci HeartBeat.Interval özelliğiyle ayarlandığı gibi her X saniyede bir WebSocket ping'i gönderir.

OnBeforeHeartBeat, Handled adlı bir parametreye sahiptir; varsayılan olarak false'tur, bu da akışın TsgcWebSocketClient bileşeni tarafından kontrol edildiği anlamına gelir. Değeri True olarak ayarlarsanız, ping gönderilmez ve Connection sınıfını kullanarak kendi özel mesajınızı gönderebilirsiniz.

 

WatchDog

WatchDog etkinse, istemci bir bağlantı kesilmesi algıladığında, WatchDog bağlantı yeniden etkin hâle gelene kadar her X saniyede bir yeniden bağlanmayı dener.

 

Örnek: bir bağlantı kesilmesinden sonra sınırsız denemeyle her 10 saniyede bir yeniden bağlanın.

 


oClient := TsgcWebSocketClient.Create(nil);
oClient.WatchDog.Interval := 10;
oClient.WatchDog.Attempts := 0;
oClient.WatchDog.Enabled := true;
oClient.Active := true;

İstemcinin bağlanmaya çalışacağı sunucuyu değiştirmek için OnBeforeWatchDog olayını kullanabilirsiniz. Örnek: 3 denemeden sonra, istemci bir sunucuya bağlanamazsa, ikincil bir sunucuya bağlanmayı dener.

Handled özelliği True olarak ayarlanırsa, istemcinin yeniden bağlanmaya çalışmayacağı anlamına gelir.