TsgcWebSocketServer_HTTPAPIMethoden › WriteData

WriteData Methode

Verzendt een bericht naar één client geïdentificeerd door zijn verbindings-GUID.

Overloads

Overload 1

Syntaxis

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

Parameters

NaamTypeBeschrijving
aGUIDconst stringIdentifier van de doelverbinding zoals toegewezen door de server na voltooiing van de client-handshake.
aMessageconst stringTekstpayload om als WebSocket-tekstframe aan die client te bezorgen.

Retourwaarde

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)

Opmerkingen

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.

Voorbeeld


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

Overload 2

Syntaxis

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

Parameters

NaamTypeBeschrijving
aGUIDconst StringIdentifier van de doelverbinding zoals toegewezen door de server na voltooiing van de client-handshake.
aStreamTStreamBronstream waarvan de inhoud als een WebSocket-binair frame naar de client wordt verzonden. De aanroeper blijft eigenaar van de stream.
aSizeIntegerOptionele 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.
aStreamingconst TwsStreamingStreamingmodus voor gefragmenteerde overdracht (stmNone, stmStart, stmContinue, stmFinish). Standaard stmNone, waarmee een volledig zelfstandig bericht wordt verzonden.

Retourwaarde

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)

Opmerkingen

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.

Voorbeeld


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

Terug naar methoden