TsgcWebSocketClientYöntemler › WriteAndWaitData

WriteAndWaitData Yöntem

Bir metin mesajı gönderir ve sunucu bir metin mesajıyla yanıt verene veya zaman aşımı süresi geçene kadar çağıranı bloke eder.

Aşırı Yüklemeler

Aşırı Yükleme 1

Sözdizimi

function WriteAndWaitData(const aText: String; const aTimeout: Integer = 10000): string;

Parametreler

NameTypeAçıklama
aTextconst String Sunucuya bir WebSocket metin çerçevesi olarak gönderilecek metin yükü.
aTimeout const IntegerSunucu yanıtını beklemek için milisaniye cinsinden maksimum süre. Varsayılan 10000'dir (10 saniye).

Dönüş Değeri

Sunucudan alınan metin mesajı veya zaman aşımı dolduğunda, kullanılabilir bağlantı olmadığında ya da bir hata oluştuğunda boş bir dize. (string)

Remarks

WriteAndWaitData, bir WebSocket üzerinden istek/yanıt tarzı alışverişler için kullanışlı bir yardımcıdır. Metin çerçevesini gönderir ve ardından sunucudan bir sonraki metin mesajı gelene veya zaman aşımı tetiklenene kadar çağıran iş parçacığını dahili bir olay üzerinde engeller. Engellediği için, kısa bir zaman aşımı kullanılmadıkça ana UI iş parçacığından çağrılmamalıdır. İstemci bağlı olmadığında veya sunucu zamanında yanıt vermediğinde boş bir dize döndürülür; soket seviyesindeki istisnalar yakalanır ve OnError öğesine iletilir. İkili yükleri göndermeniz ve almanız gerektiğinde stream aşırı yüklemesini kullanın.

Örnek


vReply := oClient.WriteAndWaitData('ping', 5000);
if vReply <> '' then
  ShowMessage(vReply);

Overload 2

Sözdizimi

function WriteAndWaitData(const aStream: TStream; const aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone; const aTimeout: Integer = 10000) : TStream;

Parametreler

NameTypeAçıklama
aStreamconst TStreamİçeriği bir WebSocket ikili çerçevesi olarak gönderilecek kaynak akış. Akışın sahipliği çağırana ait kalır.
aSize const Integerİsteğe bağlı bayt cinsinden parça boyutu; sıfırdan büyük olduğunda giden akış bu boyutta birden çok parçaya bölünür. Tüm akışı tek bir çerçeve olarak göndermek için 0 (varsayılan) kullanın.
aStreamingconst TwsStreamingParçalı iletim için akış modu (stmNone, stmStart, stmContinue, stmFinish). Tam, bağımsız bir mesaj gönderen stmNone varsayılandır.
aTimeout const IntegerSunucu yanıtını beklemek için milisaniye cinsinden maksimum süre. Varsayılan 10000'dir (10 saniye).

Dönüş Değeri

Sunucudan alınan ikili mesajı içeren yeni ayrılmış bir akış veya zaman aşımı dolduğunda, bağlantı kullanılamadığında ya da bir hata oluştuğunda nil. Döndürülen akışı serbest bırakmaktan çağıran sorumludur. (TStream)

Remarks

Bu aşırı yükleme, metin diğer aşırı yüklemesinin ikili karşılığıdır. Sağlanan stream'i bir ikili çerçeve olarak yazar ve ardından sunucudan bir sonraki ikili mesaj gelene veya zaman aşımı tetiklenene kadar çağıran iş parçacığını dahili bir olay üzerinde bloke eder. Bloke ettiği için, ana UI iş parçacığından uzun bir zaman aşımıyla çağırmaktan kaçının. İstemci bağlı değilse veya sunucu zamanında yanıt vermezse dönüş değeri nil'dir; istisnalar yakalanır ve OnError'a iletilir. İşiniz bittiğinde hem kaynak stream'i (çağrıdan sonra) hem de döndürülen stream'i serbest bırakın.

Örnek


oRequest := TMemoryStream.Create;
try
  oRequest.LoadFromFile('request.bin');
  oReply := oClient.WriteAndWaitData(oRequest, 0, stmNone, 5000);
  try
    if Assigned(oReply) then
      oReply.SaveToFile('reply.bin');
  finally
    oReply.Free;
  end;
finally
  oRequest.Free;
end;

Yöntemlere Dön