TsgcWebSocketServer_HTTPAPI › Metodi › WriteData
Invia un messaggio a un singolo client identificato dal suo GUID di connessione.
function WriteData(const aGUID, aMessage: string): Boolean;
| Nome | Tipo | Descrizione |
|---|---|---|
aGUID | const string | Identificatore della connessione di destinazione assegnato dal server al completamento dell'handshake del client. |
aMessage | const string | Payload di testo da consegnare a quel client come frame di testo WebSocket. |
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)
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.
oServer.WriteData('guid', 'My First sgcWebSockets Message!.');
function WriteData(const aGUID: String; aStream: TStream; aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone) : Boolean;
| Nome | Tipo | Descrizione |
|---|---|---|
aGUID | const String | Identificatore della connessione di destinazione assegnato dal server al completamento dell'handshake del client. |
aStream | TStream | Stream sorgente il cui contenuto viene inviato al client come frame binario WebSocket. Il chiamante rimane il proprietario dello stream. |
aSize | Integer | Dimensione 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. |
aStreaming | const TwsStreaming | Modalità di streaming per la trasmissione frammentata (stmNone, stmStart, stmContinue, stmFinish). Il valore predefinito è stmNone, che invia un messaggio completo autonomo. |
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)
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.
oStream := TMemoryStream.Create;
try
oStream.LoadFromFile('payload.bin');
oServer.WriteData('guid', oStream);
finally
oStream.Free;
end;