TsgcWebSocketClientMethods › WriteAndWaitData

WriteAndWaitData Methode

Verzendt een tekstbericht en blokkeert de aanroeper totdat de server antwoordt met een tekstbericht of de time-out verstrijkt.

Overloads

Overload 1

Syntaxis

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

Parameters

NaamTypeBeschrijving
aTextconst StringDe tekstpayload die als WebSocket-tekstframe naar de server wordt verzonden.
aTimeoutconst IntegerMaximale tijd in milliseconden om te wachten op het serverantwoord. Standaard 10000 (10 seconden).

Retourwaarde

Het tekstbericht ontvangen van de server, of een lege tekenreeks wanneer de time-out is verstreken, er geen verbinding beschikbaar was, of een fout is opgetreden. (string)

Opmerkingen

WriteAndWaitData is een hulpfunctie voor verzoek/antwoord-uitwisselingen via een WebSocket. Het verzendt het tekstframe en blokkeert vervolgens de aanroepende thread op een interne gebeurtenis totdat het volgende tekstbericht van de server arriveert of de time-out optreedt. Omdat het blokkeert, mag het niet worden aangeroepen vanuit de hoofd-UI-thread, tenzij een korte time-out wordt gebruikt. Een lege tekenreeks wordt geretourneerd wanneer de client niet verbonden is of wanneer de server niet op tijd antwoordt; uitzonderingen op het socketniveau worden opgevangen en doorgegeven aan OnError. Gebruik de stream-overload wanneer u binaire payloads moet verzenden en ontvangen.

Voorbeeld


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

Overload 2

Syntaxis

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

Parameters

NaamTypeBeschrijving
aStreamconst TStreamBronstream waarvan de inhoud zal worden verzonden als een WebSocket-binair frame. De aanroeper blijft de eigenaar van de stream.
aSizeconst IntegerOptionele fragmentgrootte in bytes; wanneer groter dan nul, wordt de uitgaande stream opgesplitst in meerdere fragmenten van deze grootte. Gebruik 0 (de standaard) om de volledige stream als één frame te verzenden.
aStreamingconst TwsStreamingStreamingmodus voor gefragmenteerde overdracht (stmNone, stmStart, stmContinue, stmFinish). Standaard stmNone, waarmee een volledig zelfstandig bericht wordt verzonden.
aTimeoutconst IntegerMaximale tijd in milliseconden om te wachten op het serverantwoord. Standaard 10000 (10 seconden).

Retourwaarde

Een nieuw toegewezen stream met het binaire bericht ontvangen van de server, of nil wanneer de time-out is verstreken, er geen verbinding beschikbaar was of er een fout is opgetreden. De aanroeper is verantwoordelijk voor het vrijgeven van de geretourneerde stream. (TStream)

Opmerkingen

Deze overload is het binaire equivalent van de tekst de andere overload. Het schrijft de opgegeven stream als een binair frame en blokkeert vervolgens de aanroepende thread op een intern event totdat het volgende binaire bericht van de server arriveert of de timeout verstrijkt. Omdat het blokkeert, vermijdt u het aanroepen vanuit de hoofd-UI-thread met een lange timeout. De retourwaarde is nil wanneer de client niet is verbonden of de server niet op tijd antwoordt; uitzonderingen worden onderschept en doorgestuurd naar OnError. Geef zowel de bronstream (na de aanroep) als de geretourneerde stream vrij wanneer u klaar bent.

Voorbeeld


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;

Terug naar methoden