TsgcWebSocketHTTPServerMethods › Broadcast

Broadcast Methode

Verzendt hetzelfde WebSocket-bericht naar alle verbonden clients, optioneel gefilterd op kanaal, protocol of verbindings-GUID-lijst.

Overloads

Overload 1

Syntaxis

procedure Broadcast(const aMessage: string; const aChannel: string = ''; const aProtocol: string = ''; const Exclude: String = ''; const Include: String = '');

Parameters

NaamTypeBeschrijving
aMessageconst stringTekstpayload geleverd aan elke overeenkomende client als een WebSocket-tekstframe.
aChannelconst stringWanneer niet-leeg, wordt het bericht alleen verzonden naar clients die op het opgegeven channel zijn geabonneerd.
aProtocolconst stringWanneer niet leeg, wordt het bericht alleen verzonden naar clients die het opgegeven WebSocket-subprotocol gebruiken.
Excludeconst StringDoor komma's gescheiden lijst van verbindings-GUID's die door deze broadcast moeten worden overgeslagen.
Includeconst StringDoor komma's gescheiden lijst van verbindings-GUID's die de broadcast beperken tot die subset; genegeerd wanneer leeg.

Opmerkingen

Deze overload verzendt een tekstframe naar elke actieve WebSocket-verbinding die wordt gehost door de HTTP-server en die overeenkomt met de opgegeven filters. Filters worden gecombineerd met AND-semantiek: een verbinding ontvangt het bericht alleen wanneer deze aan elk niet-leeg filter voldoet, en wordt nooit bereikt wanneer de GUID ervan voorkomt in Exclude. Zuivere HTTP/HTTP2-verzoeken worden genegeerd omdat Broadcast alleen gericht is op clients die de WebSocket-handshake hebben voltooid. Wanneer LoadBalancer is ingeschakeld, wordt de aanroep doorgestuurd naar het cluster zodat externe knooppunten het bericht ook aan hun lokale clients leveren. De aanroep wordt uitgevoerd op de thread van de aanroeper en keert terug zodra de frames aan elk socket zijn doorgegeven; schrijffouten per verbinding worden gerapporteerd via OnException zonder de broadcast te onderbreken.

Voorbeeld


oServer.Broadcast('Hello From Server');

Overload 2

Syntaxis

procedure Broadcast(aStream: TStream; const aChannel: string = ''; const aProtocol: string = ''; const Exclude: String = ''; const Include: String = ''; const aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone);

Parameters

NaamTypeBeschrijving
aStreamTStreamBronstream waarvan de inhoud aan elke overeenkomende client wordt afgeleverd als een binair WebSocket-frame. De aanroeper blijft eigenaar van de stream.
aChannelconst stringWanneer niet-leeg, wordt het bericht alleen verzonden naar clients die op het opgegeven channel zijn geabonneerd.
aProtocolconst stringWanneer niet leeg, wordt het bericht alleen verzonden naar clients die het opgegeven WebSocket-subprotocol gebruiken.
Excludeconst StringDoor komma's gescheiden lijst van verbindings-GUID's die door deze broadcast moeten worden overgeslagen.
Includeconst StringDoor komma's gescheiden lijst van verbindings-GUID's die de broadcast beperken tot die subset; genegeerd wanneer leeg.
aSizeconst IntegerOptionele fragmentgrootte in bytes; wanneer groter dan nul ontvangt elke client de stream opgesplitst in 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.

Opmerkingen

Deze overload zendt de inhoud van de stream uit als een binair frame naar elke WebSocket-verbinding die wordt gehost door de HTTP-server en die de kanaal-, protocol-, Inclusie- en Uitsluitingsfilters doorstaat. De stream wordt gelezen vanaf de huidige positie; de server neemt geen eigendom over, dus de aanroeper moet de stream actief houden totdat Broadcast retourneert. Wanneer LoadBalancer is ingeschakeld, wordt de binaire payload doorgestuurd naar andere knooppunten zodat ze deze opnieuw kunnen afleveren aan hun lokale clients. Gebruik aSize samen met aStreaming om zeer grote payloads te streamen als meerdere WebSocket-fragmenten in plaats van één oversized frame.

Voorbeeld


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

Terug naar methoden