TsgcWebSocketLoadBalancerServer › Methods › WriteData
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.
function WriteData(const aGuid, aMessage: string): Boolean;
| Naam | Type | Beschrijving |
|---|---|---|
aGuid | const string | Identifier van de doelverbinding zoals toegewezen door de back-upserver toen de client-handshake werd voltooid. |
aMessage | const string | Tekstpayload om als WebSocket-tekstframe aan die client te bezorgen. |
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)
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.
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 back-upserver toen de client-handshake werd voltooid. |
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 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)
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.
oStream := TMemoryStream.Create;
try
oStream.LoadFromFile('payload.bin');
oServer.WriteData('guid', oStream);
finally
oStream.Free;
end;