TsgcWSPClient_WAMP › Metody › WriteData
Wysyła wstępnie zbudowaną ramkę tekstową lub binarną WAMP bezpośrednio przez bazowy transport WebSocket.
procedure WriteData(const aText: String);
| Nazwa | Typ | Opis |
|---|---|---|
aText | const String | Gotowa do wysłania tekstowa ramka WAMP JSON (np. [2,"id","proc"] dla wywołania CALL). Przesyłana dosłownie jako tekstowa ramka WebSocket. |
Niskopoziomowe wyjście awaryjne do wysyłania eksperymentalnych lub specyficznych dla serwera wiadomości WAMP, których nie udostępnia wysokopoziomowe API (Call, Subscribe, Publish itp.). Tekst jest zapisywany dosłownie, dlatego wywołujący jest odpowiedzialny za wygenerowanie poprawnego ładunku tablicy WAMP. Nieprawidłowe użycie może desynchronizować sesję lub spowodować rozłączenie klienta przez serwer.
// send a hand-crafted WAMP PREFIX frame
WAMP.WriteData('[1,"calc","http://example.com/simple/calc#"]');
procedure WriteData(aStream: TStream; aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone);
| Nazwa | Typ | Opis |
|---|---|---|
aStream | TStream | Strumień źródłowy, którego bajty są wysyłane jako binarna ramka WebSocket. Brana jest pod uwagę bieżąca pozycja, a strumień jest odczytywany do przodu. |
aSize | Integer | Liczba bajtów do wysłania od bieżącej pozycji. Wartość 0 oznacza transmisję od bieżącej pozycji do końca strumienia. |
aStreaming | const TwsStreaming | Tryb fragmentacji: stmNone wysyła ładunek jako pojedynczą ramkę; stmStart, stmContinue i stmEnd emitują ramki kontynuacji WebSocket, gdy ładunek jest dzielony na fragmenty. |
Binarny odpowiednik przeciążenia tekstowego. WAMP v1 jest protokołem JSON-over-text, więc ta forma jest przeznaczona dla ładunków towarzyszących (na przykład ręcznie tworzonych ramek ping, transferów plików poza pasmem lub eksperymentalnych rozszerzeń), a nie dla standardowego ruchu RPC/PubSub. Pomija całą logikę księgową WAMP, więc dla danych wysyłanych w ten sposób nie jest wykonywana żadna korelacja OnCallResult, OnCallError ani OnEvent.
var
oStream: TFileStream;
begin
oStream := TFileStream.Create('payload.bin', fmOpenRead);
try
WAMP.WriteData(oStream);
finally
oStream.Free;
end;
end;