TsgcWebSocketHTTPServer › Metodi › WriteData
Invia un messaggio WebSocket 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 WebSocket 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. Solo le sessioni WebSocket aggiornate sono idonee; i GUID appartenenti a pure richieste HTTP vengono rifiutati e viene restituito False. 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 (non supportato quando IOHandlerOptions.IOHandlerType = iohIOCP). Utilizzare Broadcast per raggiungere tutti i client attivi con una singola 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 si rivolge a un singolo client WebSocket con un payload binario letto dallo stream fornito. Lo stream viene consumato dalla sua posizione corrente e il server non ne acquisisce la proprietà, pertanto il chiamante deve mantenerlo attivo fino al ritorno di WriteData (oppure, in caso di accodamento, fino al completamento dell'invio). 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). Utilizzare aSize insieme a aStreaming per l'invio di 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;