TsgcWebSocketServer_HTTPAPIMetodi › WriteData

WriteData Method

Invia un messaggio a un singolo client identificato dal suo GUID di connessione.

Overload

Overload 1

Sintassi

function WriteData(const aGUID, aMessage: string): Boolean;

Parametri

NomeTipoDescrizione
aGUIDconst stringIdentificatore della connessione di destinazione assegnato dal server al completamento dell'handshake del client.
aMessageconst stringPayload di testo da consegnare a quel client come frame di testo WebSocket.

Valore restituito

True quando una connessione con il GUID specificato è stata individuata e il frame è stato consegnato al suo socket HTTP.sys; False quando non esiste alcuna connessione attiva corrispondente. (Boolean)

Note

Questo overload cerca la connessione il cui GUID corrisponde a aGUID e invia il messaggio di testo a quel singolo client. Il GUID è il valore esposto da TsgcWSConnection.Guid, tipicamente acquisito in OnConnect e memorizzato dall'applicazione. Quando QueueOptions.Text è impostato su un valore diverso da qmNone, il frame viene accodato e inviato dal thread della connessione anziché dal thread del chiamante, il che impedisce blocchi quando più thread inviano allo stesso client. Quando Asynchronous è abilitato, il metodo ritorna prima che HTTP.sys abbia terminato la scrittura del frame; il completamento viene segnalato tramite OnAsynchronous. Utilizzare Broadcast per raggiungere ogni client attivo con una sola chiamata.

Esempio


oServer.WriteData('guid', 'My First sgcWebSockets Message!.');

Sovraccarico 2

Sintassi

function WriteData(const aGUID: String; aStream: TStream; aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone) : Boolean;

Parametri

NomeTipoDescrizione
aGUIDconst StringIdentificatore della connessione di destinazione assegnato dal server al completamento dell'handshake del client.
aStreamTStreamStream sorgente il cui contenuto viene inviato al client come frame binario WebSocket. Il chiamante rimane il proprietario dello stream.
aSizeIntegerDimensione 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.

Valore restituito

True quando è stata trovata una connessione con il GUID indicato e lo stream è stato consegnato al suo socket HTTP.sys; False quando non esiste nessuna connessione attiva corrispondente. (Boolean)

Note

Questo overload si rivolge a un singolo client con un payload binario letto dallo stream fornito. Lo stream viene consumato dalla sua posizione corrente e il server non ne assume la proprietà, quindi il chiamante deve mantenerlo attivo finché WriteData non ritorna (o, quando si utilizza la coda o quando Asynchronous è abilitato, finché l'invio non è effettivamente completato). Quando QueueOptions.Binary è impostato su un valore diverso da qmNone, il frame viene messo in coda e inviato dal thread di connessione anziché dal thread del chiamante. Utilizzare aSize insieme a aStreaming quando si inviano payload molto grandi che dovrebbero essere frammentati su più frame WebSocket anziché bufferizzati come un unico messaggio di grandi dimensioni in HTTP.sys.

Esempio


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

Torna ai Metodi