TsgcWebSocketLoadBalancerServerMethods › WriteData

WriteData Methode

Verzendt een WebSocket-bericht naar een enkele client die is geïdentificeerd via zijn verbindings-GUID, waarbij het frame wordt gerouteerd via de back-upserver die eigenaar is van de sessie.

Overloads

Overload 1

Syntaxis

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

Parameters

NaamTypeBeschrijving
aGuidconst stringIdentifier van de doelverbinding zoals toegewezen door de back-upserver toen de client-handshake werd voltooid.
aMessageconst stringTekstpayload om als WebSocket-tekstframe aan die client te bezorgen.

Retourwaarde

True wanneer een verbinding met de opgegeven GUID is gevonden op een geregistreerde back-upserver en het frame is doorgestuurd naar de socket; False wanneer er geen overeenkomende actieve verbinding bestaat in het cluster. (Boolean)

Opmerkingen

Deze overload vraagt de load balancer om de back-upserver te zoeken die eigenaar is van de WebSocket-verbinding waarvan de GUID overeenkomt met aGuid en stuurt het tekstbericht door naar die ene client. De GUID is de waarde die wordt weergegeven door TsgcWSConnection.Guid, doorgaans vastgelegd in OnConnect en opgeslagen door de applicatie. Alleen upgegraded WebSocket-sessies komen in aanmerking; GUID's die behoren tot puur HTTP-verzoeken worden geweigerd en False wordt geretourneerd. 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 (niet ondersteund wanneer IOHandlerOptions.IOHandlerType = iohIOCP). Gebruik Broadcast om elke actieve client in het cluster 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 back-upserver toen de client-handshake werd voltooid.
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 op een geregistreerde back-upserver en de stream is doorgestuurd naar zijn socket; False wanneer er nergens in het cluster een overeenkomende actieve verbinding bestaat. (Boolean)

Opmerkingen

Deze overload richt zich op één WebSocket-client met een binaire payload gelezen uit de meegeleverde stream, waarbij de bytes via de load balancer worden gerouteerd naar de backupserver die de sessie beheert. De stream wordt verbruikt vanaf de huidige positie en de load balancer neemt geen eigendom over, dus de aanroeper moet deze actief houden totdat WriteData retourneert (of, bij wachtrij plaatsen, totdat het verzenden 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 (niet ondersteund wanneer IOHandlerOptions.IOHandlerType = iohIOCP). Gebruik aSize samen met aStreaming bij het verzenden van zeer grote payloads die over meerdere WebSocket-frames moeten worden gefragmenteerd.

Voorbeeld


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

Terug naar methoden