TsgcWebSocketClient › Metodi › WriteData

WriteData Method

Invia un messaggio di testo al server WebSocket, suddividendolo facoltativamente in frammenti di una determinata dimensione.

Overload

Overload 1

Sintassi

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

Parametri

NomeTipoDescrizione
aTextconst StringIl payload testuale da inviare al server come frame di testo WebSocket.
aSizeconst IntegerDimensione opzionale del frammento in byte; quando maggiore di zero, il messaggio viene suddiviso in più frammenti di questa dimensione. Utilizzare 0 (il valore predefinito) per inviare l'intero messaggio come un singolo frame.
aStreamingconst TwsStreamingModalità di streaming per la trasmissione frammentata (stmNone, stmStart, stmContinue, stmFinish). Il valore predefinito è stmNone, che invia un messaggio completo autonomo.

Note

WriteData trasmette la stringa come frame di testo WebSocket sulla connessione attiva. Per impostazione predefinita, la chiamata viene eseguita sul thread chiamante e restituisce il controllo non appena i byte vengono consegnati al socket. Quando QueueOptions.Text è impostato su un valore diverso da qmNone, il messaggio viene accodato e inviato effettivamente dal thread della connessione, evitando blocchi quando più thread scrivono contemporaneamente. Qualsiasi eccezione socket viene inoltrata a OnError. Utilizzare l'overload con stream per l'invio di payload di grandi dimensioni o dati binari.

Quando il client non è connesso, o il suo handshake WebSocket non è ancora terminato, non viene inviato nulla e l'errore viene segnalato tramite OnError con Connection = nil e l'errore Data not sent, the client is not connected or its handshake has not completed. (resourcestring S_ERROR_CLIENT_NOT_CONNECTED). L'evento viene generato sul thread chiamante prima che WriteData restituisca il controllo, e LastError contiene lo stesso testo. Nessuna eccezione viene sollevata verso il chiamante e il client non viene disconnesso. Impostare Options.RaiseDisconnectExceptions su False per ignorare questa segnalazione e scartare il messaggio silenziosamente, come facevano le versioni precedenti. Quando un invio fallisce perché la sua connessione è andata persa e il client si è già riconnesso, l'errore viene segnalato comunque con Connection = nil, in modo che la nuova connessione resti aperta.

Esempio


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

Sovraccarico 2

Sintassi

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

Parametri

NomeTipoDescrizione
aStreamconst TStreamStream sorgente il cui contenuto verrà inviato come frame binario WebSocket. Il chiamante rimane il proprietario dello stream.
aSizeconst IntegerDimensione opzionale del frammento in byte; quando è maggiore di zero, lo stream viene suddiviso in più frammenti di questa dimensione. Utilizzare 0 (il valore predefinito) per inviare l'intero stream come un singolo frame.
aStreamingconst TwsStreamingModalità di streaming per la trasmissione frammentata (stmNone, stmStart, stmContinue, stmFinish). Il valore predefinito è stmNone, che invia un messaggio completo autonomo.

Note

WriteData legge lo stream fornito dalla sua posizione corrente e trasmette il contenuto come frame binario WebSocket. La chiamata viene eseguita sul thread chiamante per impostazione predefinita; quando QueueOptions.Binary è impostato su un valore diverso da qmNone, il messaggio viene accodato e inviato effettivamente dal thread di connessione. Le eccezioni socket vengono catturate e inoltrate a OnError. Quando il client non è connesso, o il suo handshake non è ancora terminato, non viene inviato nulla e l'errore viene segnalato tramite OnError con Connection = nil, come descritto per l'overload con testo. Liberare lo stream solo dopo che la chiamata è tornata (oppure, quando si usa l'accodamento, dopo che l'invio è completato).

Esempio


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

Torna ai Metodi