TsgcWebSocketClient › Olaylar › OnError

OnError Olay

Bağlantıda bir WebSocket protokol hatası oluştuğunda her seferinde tetiklenir.

Sözdizimi

property OnError: TsgcWSErrorEvent;
// TsgcWSErrorEvent = procedure(Connection: TsgcWSConnection; const Error: string) of object

Varsayılan Değer

—

Remarks

OnError, WebSocket katmanı tarafından algılanan protokol düzeyindeki sorunları raporlar, örneğin geçersiz bir mesaj türü, hatalı biçimlendirilmiş bir çerçeve veya Options.ValidateUTF8 etkinleştirildiğinde geçersiz bir UTF-8 yükü. Error parametresi başarısızlığın metinsel bir açıklamasını içerir; Connection parametresi etkilenen oturumu tanımlar. Ele alınmayan istisnalar (soket hataları, erişim ihlalleri...) için bunun yerine OnException kullanın. Connection atanmışsa, bileşen, OnError tetiklendikten sonra seçeneklerden bağımsız olarak o bağlantıyı kapatır: işleyici genellikle bu noktada zaten geri dönmüştür, ancak NotifyEvents neAsynchronous olarak ayarlandığında ikincil bir iş parçacığında oluşan bir hata ana iş parçacığına kuyruğa alınır ve işleyicisi bağlantı kapatıldıktan sonra çalışabilir. Connection nil olduğunda hiçbir şey kapatılmaz.

OnError, Connection = nil ile tetiklenebilir, bu yüzden bir işleyici Connection'ı kullanmadan önce kontrol etmelidir. WriteData, WriteAndWaitData ve Ping, istemci bağlı olmadığı için gönderilemeyen bir mesajı bu şekilde bildirir; WriteData ve WriteAndWaitData ayrıca WebSocket handshake'i henüz tamamlanmadığında da böyle bildirir. Bu durumda Error parametresi Data not sent, the client is not connected or its handshake has not completed. (resourcestring S_ERROR_CLIENT_NOT_CONNECTED) olur ve olay, yöntemi çağıran iş parçacığında, yöntem geri dönmeden önce tetiklenir. İstemci yeniden bağlandıktan sonra başarısız olan bir yazma da Connection = nil ile bildirilir, böylece yeni bağlantı kapatılmaz. Gönderilemeyen mesajların bildirimini devre dışı bırakmak için Options.RaiseDisconnectExceptions öğesini False olarak ayarlayın.

Örnek


procedure OnError(Connection: TsgcWSConnection; const Error: string);
begin
  if Connection = nil then
    // a write or ping found no connection, nothing was sent
    WriteLn('#not sent: ' + Error)
  else
    WriteLn('#error: ' + Error);
end;

Olaylara Dön