TsgcWebSocketClient › Methods › WriteAndWaitData
Verzendt een tekstbericht en blokkeert de aanroeper totdat de server antwoordt met een tekstbericht of de time-out verstrijkt.
function WriteAndWaitData(const aText: String; const aTimeout: Integer = 10000): string;
| Naam | Type | Beschrijving |
|---|---|---|
aText | const String | De tekstpayload die als WebSocket-tekstframe naar de server wordt verzonden. |
aTimeout | const Integer | Maximale tijd in milliseconden om te wachten op het serverantwoord. Standaard 10000 (10 seconden). |
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)
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.
vReply := oClient.WriteAndWaitData('ping', 5000);
if vReply <> '' then
ShowMessage(vReply);
function WriteAndWaitData(const aStream: TStream; const aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone; const aTimeout: Integer = 10000) : TStream;
| Naam | Type | Beschrijving |
|---|---|---|
aStream | const TStream | Bronstream waarvan de inhoud zal worden verzonden als een WebSocket-binair frame. De aanroeper blijft de eigenaar van de stream. |
aSize | const Integer | Optionele 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. |
aStreaming | const TwsStreaming | Streamingmodus voor gefragmenteerde overdracht (stmNone, stmStart, stmContinue, stmFinish). Standaard stmNone, waarmee een volledig zelfstandig bericht wordt verzonden. |
aTimeout | const Integer | Maximale tijd in milliseconden om te wachten op het serverantwoord. Standaard 10000 (10 seconden). |
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)
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.
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;