TsgcWebSocketClient › Yöntemler › Ping

Ping Yöntem

Sunucuya bir WebSocket ping çerçevesi gönderir ve pong yanıtını beklemeden hemen döner.

Aşırı Yüklemeler

Aşırı Yükleme 1

Sözdizimi

procedure Ping(const aText: String = '');

Parametreler

NameTypeAçıklama
aTextconst StringPing çerçevesi içinde taşınacak isteğe bağlı yük; yük olmadan bir ping göndermek için boş bir dize geçirin.

Remarks

Bu overload, ping'i tetikler ve çağıranı engellemeden veya eşleşen pong'u beklemeden hemen döner. İstemcinin bağlantısı olmadığında hiçbir şey gönderilmez ve hata, OnError üzerinden Connection = nil ile birlikte Data not sent, the client is not connected or its handshake has not completed. hatasıyla bildirilir. Olay, Ping geri dönmeden önce çağıran iş parçacığında tetiklenir ve çağırana herhangi bir istisna fırlatılmaz. Bu bildirimi atlamak için Options.RaiseDisconnectExceptions öğesini False olarak ayarlayın. WebSocket handshake'i tamamlanmadan önce gönderilen bir ping hata olarak bildirilmez, çünkü HeartBeat da ping'lerini bu yöntem üzerinden gönderir. Sunucudan alınan herhangi bir pong, standart bağlantı olayları aracılığıyla asenkron olarak teslim edilir. Dahili olarak istisnalar yakalanır ve OnError'a yönlendirilir. Peer'ın hâlâ ulaşılabilir olduğunun onayına ihtiyaç duyduğunuzda diğer overload'ın timeout overload'ını kullanın.

Örnek


oClient.Ping('keepalive');

Overload 2

Sözdizimi

function Ping(aTimeout: Integer; const aText: String = '') : Boolean;

Parametreler

NameTypeAçıklama
aTimeoutIntegerVazgeçmeden önce pong yanıtını beklemek için milisaniye cinsinden maksimum süre.
aTextconst StringPing çerçevesi içinde taşınacak isteğe bağlı yük; yük olmadan bir ping göndermek için boş bir dize geçirin.

Dönüş Değeri

Sunucu zaman aşımı penceresi içinde eşleşen bir pong ile yanıt verdiğinde True; aksi takdirde False. False döndürüldüğünde, eş ulaşılamaz kabul edildiği için istemci bağlantıyı kapatmayı seçebilir. (Boolean)

Remarks

Bu aşırı yükleme, pong gelene veya zaman aşımı geçene kadar çağıran iş parçacığını engeller, dolayısıyla etkileşimli canlılık denetimleri için kullanışlıdır. İstemcinin bağlantısı olmadığında yöntem hemen False döndürür ve bunu, diğer aşırı yükleme için açıklandığı gibi Connection = nil ile OnError üzerinden bildirir. Temel soket tarafından oluşturulan istisnalar yakalanır ve OnError'a iletilir. Engellemeyen bir gönder-ve-unut ping için bunun yerine parametresiz diğer aşırı yükleme aşırı yüklemesini kullanın.

Örnek


if not oClient.Ping(5000, 'healthcheck') then
  oClient.Disconnect;

Yöntemlere Dön