TsgcWebSocketClientMetody › WriteData

WriteData Metoda

Wysyła wiadomość tekstową do serwera WebSocket, opcjonalnie dzieląc ją na fragmenty o podanym rozmiarze.

Przeciążenia

Przeciążenie 1

Składnia

procedure WriteData(const aText: String; const aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone);

Parametry

NazwaTypOpis
aTextconst StringŁadunek tekstowy do wysłania do serwera jako ramka tekstowa WebSocket.
aSizeconst IntegerOpcjonalny 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ę.
aStreamingconst TwsStreamingTryb strumieniowania dla pofragmentowanej transmisji (stmNone, stmStart, stmContinue, stmFinish). Domyślnie stmNone, co wysyła kompletną, samodzielną wiadomość.

Uwagi

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.

Przykład


oClient.WriteData('My First sgcWebSockets Message!.');

Przeciążenie 2

Składnia

procedure WriteData(const aStream: TStream; const aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone);

Parametry

NazwaTypOpis
aStreamconst TStreamStrumień źródłowy, którego zawartość zostanie wysłana jako binarna ramka WebSocket. Wywołujący pozostaje właścicielem strumienia.
aSizeconst IntegerOpcjonalny 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.
aStreamingconst TwsStreamingTryb strumieniowania dla pofragmentowanej transmisji (stmNone, stmStart, stmContinue, stmFinish). Domyślnie stmNone, co wysyła kompletną, samodzielną wiadomość.

Uwagi

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).

Przykład


oStream := TMemoryStream.Create;
try
  oStream.LoadFromFile('payload.bin');
  oClient.WriteData(oStream);
finally
  oStream.Free;
end;

Powrót do metod