TsgcWebSocketClient › Methoden › WriteAndWaitData
Sendet eine Textnachricht und blockiert den Aufrufer, bis der Server mit einer Textnachricht antwortet oder das Timeout abläuft.
function WriteAndWaitData(const aText: String; const aTimeout: Integer = 10000): string;
| Name | Typ | Beschreibung |
|---|---|---|
aText | const String | Die Textnutzlast, die als WebSocket-Text-Frame an den Server gesendet werden soll. |
aTimeout | const Integer | Maximale Zeit in Millisekunden, die auf die Serverantwort gewartet wird. Standard ist 10000 (10 Sekunden). |
Die vom Server empfangene Textnachricht oder eine leere Zeichenfolge, wenn das Timeout abgelaufen ist, keine Verbindung verfügbar war oder ein Fehler auftrat. (string)
WriteAndWaitData ist ein Komforthelfer für Austauschvorgänge im Request/Response-Stil über einen WebSocket. Es sendet den Text-Frame und blockiert dann den aufrufenden Thread an einem internen Ereignis, bis die nächste Textnachricht vom Server eintrifft oder der Timeout ausgelöst wird. Da es blockiert, sollte es nicht aus dem Haupt-UI-Thread aufgerufen werden, es sei denn, es wird ein kurzer Timeout verwendet. Ein leerer String wird zurückgegeben, wenn der Client nicht verbunden ist oder wenn der Server nicht rechtzeitig antwortet; Ausnahmen auf Socket-Ebene werden abgefangen und an OnError weitergeleitet. Verwenden Sie die Stream-Überladung, wenn Sie binäre Nutzdaten senden und empfangen müssen.
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;
| Name | Typ | Beschreibung |
|---|---|---|
aStream | const TStream | Quellstream, dessen Inhalt als WebSocket-Binär-Frame gesendet wird. Der Aufrufer bleibt der Eigentümer des Streams. |
aSize | const Integer | Optionale Fragmentgröße in Bytes; wenn größer als null, wird der ausgehende Stream in mehrere Fragmente dieser Größe aufgeteilt. Verwenden Sie 0 (der Standard), um den gesamten Stream als einzelnen Frame zu senden. |
aStreaming | const TwsStreaming | Streaming-Modus für die fragmentierte Übertragung (stmNone, stmStart, stmContinue, stmFinish). Standard ist stmNone, was eine vollständige eigenständige Nachricht sendet. |
aTimeout | const Integer | Maximale Zeit in Millisekunden, die auf die Serverantwort gewartet wird. Standard ist 10000 (10 Sekunden). |
Ein neu zugewiesener Stream, der die vom Server empfangene Binärnachricht enthält, oder nil, wenn das Timeout abgelaufen ist, keine Verbindung verfügbar war oder ein Fehler aufgetreten ist. Der Aufrufer ist für das Freigeben des zurückgegebenen Streams verantwortlich. (TStream)
Dieser Overload ist das binäre Gegenstück zum Text-anderen Overload. Es schreibt den übergebenen Stream als binären Frame und blockiert dann den aufrufenden Thread an einem internen Ereignis, bis die nächste binäre Nachricht vom Server eintrifft oder das Timeout greift. Da es blockiert, sollten Sie es nicht aus dem Haupt-UI-Thread mit einem langen Timeout aufrufen. Der Rückgabewert ist nil, wenn der Client nicht verbunden ist oder der Server nicht rechtzeitig antwortet; Ausnahmen werden abgefangen und an OnError weitergeleitet. Geben Sie sowohl den Quell-Stream (nach dem Aufruf) als auch den zurückgegebenen Stream frei, wenn Sie damit fertig sind.
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;