TsgcWebSocketServer › 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 è stata trovata una connessione con il GUID specificato e il frame è stato passato al relativo socket; 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 messo in coda e inviato dal thread di connessione anziché dal thread del chiamante (non supportato quando IOHandlerOptions.IOHandlerType = iohIOCP). Utilizzi 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 individuata una connessione con il GUID specificato e lo stream è stato consegnato al relativo socket; False quando non esiste alcuna connessione attiva corrispondente. (Boolean)
Questo overload ha come destinatario 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 (oppure, in caso di accodamento, finché l'invio non è completato). Quando QueueOptions.Binary è impostato su un valore diverso da qmNone il frame viene accodato e inviato dal thread della connessione anziché dal thread del chiamante (non supportato quando IOHandlerOptions.IOHandlerType = iohIOCP). Utilizzi aSize insieme a aStreaming quando invia payload molto grandi che devono essere frammentati su più frame WebSocket.
oStream := TMemoryStream.Create;
try
oStream.LoadFromFile('payload.bin');
oServer.WriteData('guid', oStream);
finally
oStream.Free;
end;