TsgcWebSocketServer_HTTPAPI › Methoden › Broadcast
Verstuurt hetzelfde bericht naar alle verbonden clients, optioneel gefilterd op kanaal, protocol of verbindings-GUID-lijst.
procedure Broadcast(const aMessage: string; const aChannel: string = ''; const aProtocol: string = ''; const Exclude: String = ''; const Include: String = '');
| Naam | Type | Beschrijving |
|---|---|---|
aMessage | const string | Tekstpayload geleverd aan elke overeenkomende client als een WebSocket-tekstframe. |
aChannel | const string | Wanneer niet-leeg, wordt het bericht alleen verzonden naar clients die op het opgegeven channel zijn geabonneerd. |
aProtocol | const string | Wanneer niet leeg, wordt het bericht alleen verzonden naar clients die het opgegeven WebSocket-subprotocol gebruiken. |
Exclude | const String | Door komma's gescheiden lijst van verbindings-GUID's die door deze broadcast moeten worden overgeslagen. |
Include | const String | Door komma's gescheiden lijst van verbindings-GUID's die de broadcast beperken tot die subset; genegeerd wanneer leeg. |
Deze overload verzendt een tekstframe naar elke actieve WebSocket-verbinding 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 zijn GUID in Exclude voorkomt. Wanneer Asynchronous is ingeschakeld, keert de aanroep terug voordat elke HTTP.sys-schrijfbewerking is voltooid en rapporteert de gebeurtenis OnAsynchronous de voltooiing; wanneer uitgeschakeld, draait de aanroep op de thread van de aanroeper en keert terug zodra de frames voor elke socket in de wachtrij zijn geplaatst. Schrijffouten per verbinding worden gerapporteerd via OnException zonder de broadcast af te breken.
oServer.Broadcast('Hello From Server');
procedure Broadcast(aStream: TStream; const aChannel: string = ''; const aProtocol: string = ''; const Exclude: String = ''; const Include: String = ''; const aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone);
| Naam | Type | Beschrijving |
|---|---|---|
aStream | TStream | Bronstream waarvan de inhoud aan elke overeenkomende client wordt afgeleverd als een binair WebSocket-frame. De aanroeper blijft eigenaar van de stream. |
aChannel | const string | Wanneer niet-leeg, wordt het bericht alleen verzonden naar clients die op het opgegeven channel zijn geabonneerd. |
aProtocol | const string | Wanneer niet leeg, wordt het bericht alleen verzonden naar clients die het opgegeven WebSocket-subprotocol gebruiken. |
Exclude | const String | Door komma's gescheiden lijst van verbindings-GUID's die door deze broadcast moeten worden overgeslagen. |
Include | const String | Door komma's gescheiden lijst van verbindings-GUID's die de broadcast beperken tot die subset; genegeerd wanneer leeg. |
aSize | const Integer | Optionele 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. |
aStreaming | const TwsStreaming | Streamingmodus voor gefragmenteerde overdracht (stmNone, stmStart, stmContinue, stmFinish). Standaard stmNone, waarmee een volledig zelfstandig bericht wordt verzonden. |
Deze overload zendt de streaminhoud als een binair frame uit naar elke verbinding die de kanaal-, protocol-, Include- en Exclude-filters doorstaat. De stream wordt gelezen vanaf zijn huidige positie; de server neemt geen eigendom, dus de aanroeper moet de stream actief houden totdat Broadcast terugkeert (of, wanneer Asynchronous is ingeschakeld, totdat de OnAsynchronous-gebeurtenis voltooiing rapporteert). Gebruik aSize samen met aStreaming om zeer grote payloads te streamen als meerdere WebSocket-fragmenten in plaats van één te groot frame, wat met name nuttig is op HTTP.sys waar de kernel de uitgaande gegevens buffert.
oStream := TMemoryStream.Create;
try
oStream.LoadFromFile('payload.bin');
oServer.Broadcast(oStream);
finally
oStream.Free;
end;