TsgcWebSocketClient › Metody › WriteData
Wysyła wiadomość tekstową do serwera WebSocket, opcjonalnie dzieląc ją na fragmenty o podanym rozmiarze.
procedure WriteData(const aText: String; const aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone);
| Nazwa | Typ | Opis |
|---|---|---|
aText | const String | Ładunek tekstowy do wysłania do serwera jako ramka tekstowa WebSocket. |
aSize | const Integer | Opcjonalny rozmiar fragmentu w bajtach; gdy jest większy od zera, wiadomość jest dzielona na wiele fragmentów o tym rozmiarze. Użyj wartości 0 (domyślnie), aby wysłać całą wiadomość jako jedną ramkę. |
aStreaming | const TwsStreaming | Tryb strumieniowania dla pofragmentowanej transmisji (stmNone, stmStart, stmContinue, stmFinish). Domyślnie stmNone, co wysyła kompletną, samodzielną wiadomość. |
WriteData przesyła ciąg jako ramkę tekstową WebSocket w aktywnym połączeniu. Domyślnie wywołanie jest wykonywane w wątku wywołującym i kończy się po przekazaniu bajtów do gniazda. Gdy QueueOptions.Text jest ustawione na wartość inną niż qmNone, wiadomość jest kolejkowana i faktycznie wysyłana z własnego wątku połączenia, co zapobiega blokadom w przypadku równoczesnego zapisu przez kilka wątków. Wywołanie nie ma efektu, gdy klient nie jest połączony, a wszelkie wyjątki gniazda są przekazywane do OnError. W przypadku wysyłania dużych ładunków lub danych binarnych należy użyć przeciążenia strumieniowego.
oClient.WriteData('My First sgcWebSockets Message!.');
procedure WriteData(const aStream: TStream; const aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone);
| Nazwa | Typ | Opis |
|---|---|---|
aStream | const TStream | Strumień źródłowy, którego zawartość zostanie wysłana jako binarna ramka WebSocket. Wywołujący pozostaje właścicielem strumienia. |
aSize | const Integer | Opcjonalny rozmiar fragmentu w bajtach; gdy jest większy od zera, strumień jest dzielony na wiele fragmentów o tym rozmiarze. Wartość 0 (domyślna) powoduje wysłanie całego strumienia jako pojedynczej ramki. |
aStreaming | const TwsStreaming | Tryb strumieniowania dla pofragmentowanej transmisji (stmNone, stmStart, stmContinue, stmFinish). Domyślnie stmNone, co wysyła kompletną, samodzielną wiadomość. |
WriteData odczytuje dostarczony strumień od bieżącej pozycji i przesyła jego zawartość jako binarną ramkę WebSocket. Wywołanie domyślnie odbywa się w wątku wywołującym; gdy właściwość QueueOptions.Binary jest ustawiona na wartość inną niż qmNone, wiadomość jest kolejkowana i faktycznie wysyłana z wątku połączenia. Metoda jest ignorowana, gdy klient nie jest połączony, a wyjątki gniazda są przechwytywane i przekazywane do OnError. Strumień należy zwolnić dopiero po powrocie wywołania (lub, w przypadku kolejkowania, po zakończeniu wysyłania).
oStream := TMemoryStream.Create;
try
oStream.LoadFromFile('payload.bin');
oClient.WriteData(oStream);
finally
oStream.Free;
end;