TsgcWebSocketServer_HTTPAPI › Methoden › WriteData
Verzendt een bericht naar één client geïdentificeerd door zijn verbindings-GUID.
function WriteData(const aGUID, aMessage: string): Boolean;
| Naam | Type | Beschrijving |
|---|---|---|
aGUID | const string | Identifier van de doelverbinding zoals toegewezen door de server na voltooiing van de client-handshake. |
aMessage | const string | Tekstpayload om als WebSocket-tekstframe aan die client te bezorgen. |
True wanneer een verbinding met de gegeven GUID is gevonden en het frame is doorgegeven aan zijn HTTP.sys-socket; False wanneer er geen overeenkomende actieve verbinding bestaat. (Boolean)
Deze overload zoekt de verbinding op waarvan de GUID overeenkomt met aGUID en verzendt het tekstbericht naar die ene client. De GUID is de waarde die wordt weergegeven door TsgcWSConnection.Guid, doorgaans vastgelegd in OnConnect en opgeslagen door de toepassing. Wanneer QueueOptions.Text is ingesteld op een andere waarde dan qmNone, wordt het frame in de wachtrij geplaatst en verzonden vanuit de verbindingsthread in plaats van de thread van de aanroeper, waardoor vergrendelingen worden voorkomen wanneer meerdere threads naar dezelfde client sturen. Wanneer Asynchronous is ingeschakeld, keert de methode terug voordat HTTP.sys klaar is met het schrijven van het frame; de voltooiing wordt gerapporteerd via OnAsynchronous. Gebruik Broadcast om elke actieve client in één aanroep te bereiken.
oServer.WriteData('guid', 'My First sgcWebSockets Message!.');
function WriteData(const aGUID: String; aStream: TStream; aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone) : Boolean;
| Naam | Type | Beschrijving |
|---|---|---|
aGUID | const String | Identifier van de doelverbinding zoals toegewezen door de server na voltooiing van de client-handshake. |
aStream | TStream | Bronstream waarvan de inhoud als een WebSocket-binair frame naar de client wordt verzonden. De aanroeper blijft eigenaar van de stream. |
aSize | Integer | Optionele fragmentgrootte in bytes; wanneer groter dan nul, wordt de stream opgesplitst in meerdere fragmenten van deze grootte. Gebruik 0 (de standaard) om de volledige stream als één frame te verzenden. |
aStreaming | const TwsStreaming | Streamingmodus voor gefragmenteerde overdracht (stmNone, stmStart, stmContinue, stmFinish). Standaard stmNone, waarmee een volledig zelfstandig bericht wordt verzonden. |
True wanneer een verbinding met de opgegeven GUID is gevonden en de stream is overgedragen aan zijn HTTP.sys-socket; False wanneer er geen overeenkomende actieve verbinding bestaat. (Boolean)
Deze overbelasting richt zich op één client met een binaire payload die wordt gelezen uit de opgegeven stream. De stream wordt geconsumeerd vanaf de huidige positie en de server neemt geen eigendom, dus de aanroeper moet deze actief houden totdat WriteData retourneert (of, bij wachtrij of wanneer Asynchronous is ingeschakeld, totdat het verzenden daadwerkelijk is voltooid). Wanneer QueueOptions.Binary is ingesteld op een andere waarde dan qmNone, wordt het frame in de wachtrij geplaatst en verzonden vanuit de verbindingsthread in plaats van de thread van de aanroeper. Gebruik aSize samen met aStreaming bij het verzenden van zeer grote payloads die over meerdere WebSocket-frames gefragmenteerd moeten worden in plaats van als één oversized bericht te worden gebufferd in HTTP.sys.
oStream := TMemoryStream.Create;
try
oStream.LoadFromFile('payload.bin');
oServer.WriteData('guid', oStream);
finally
oStream.Free;
end;