TsgcWebSocketServerMethoden › Broadcast

Broadcast Methode

Sendet dieselbe Nachricht an alle verbundenen Clients, optional gefiltert nach Kanal, Protokoll oder Verbindungs-GUID-Liste.

Überladungen

Overload 1

Syntax

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

Parameter

NameTypBeschreibung
aMessageconst stringText-Payload, die jedem übereinstimmenden Client als WebSocket-Text-Frame zugestellt wird.
aChannelconst stringWenn nicht leer, wird die Nachricht nur an Clients gesendet, die den angegebenen Kanal abonniert haben.
aProtocolconst stringWenn nicht leer, wird die Nachricht nur an Clients gesendet, die das angegebene WebSocket-Subprotokoll verwenden.
Excludeconst StringKommagetrennte Liste von Verbindungs-GUIDs, die von diesem Broadcast übersprungen werden müssen.
Includeconst StringDurch Kommas getrennte Liste von Verbindungs-GUIDs, die den Broadcast auf diese Teilmenge beschränkt; wird ignoriert, wenn leer.

Hinweise

Diese Überladung sendet einen Text-Frame an jede aktive Verbindung, die den angegebenen Filtern entspricht. Filter werden mit UND-Semantik kombiniert: Eine Verbindung empfängt die Nachricht nur, wenn sie jeden nicht-leeren Filter erfüllt, und wird niemals erreicht, wenn ihre GUID in Exclude erscheint. Wenn LoadBalancer aktiviert ist, wird der Aufruf über das Cluster weitergeleitet, sodass Remote-Knoten die Nachricht auch an ihre lokalen Clients zustellen. Der Aufruf wird auf dem Thread des Aufrufers ausgeführt und kehrt zurück, sobald die Frames an jeden Socket übergeben wurden; Schreibfehler pro Verbindung werden über OnException gemeldet, ohne den Broadcast abzubrechen.

Beispiel


oServer.Broadcast('Hello From Server');

Überladung 2

Syntax

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

Parameter

NameTypBeschreibung
aStreamTStreamQuell-Stream, dessen Inhalt jedem passenden Client als WebSocket-Binär-Frame zugestellt wird. Der Aufrufer bleibt Eigentümer des Streams.
aChannelconst stringWenn nicht leer, wird die Nachricht nur an Clients gesendet, die den angegebenen Kanal abonniert haben.
aProtocolconst stringWenn nicht leer, wird die Nachricht nur an Clients gesendet, die das angegebene WebSocket-Subprotokoll verwenden.
Excludeconst StringKommagetrennte Liste von Verbindungs-GUIDs, die von diesem Broadcast übersprungen werden müssen.
Includeconst StringDurch Kommas getrennte Liste von Verbindungs-GUIDs, die den Broadcast auf diese Teilmenge beschränkt; wird ignoriert, wenn leer.
aSizeconst IntegerOptionale Fragmentgröße in Bytes; bei einem Wert größer als null erhält jeder Client den Stream in Fragmente dieser Größe aufgeteilt. Verwenden Sie 0 (Standard), um den gesamten Stream als einzelnen Frame zu senden.
aStreamingconst TwsStreamingStreaming-Modus für die fragmentierte Übertragung (stmNone, stmStart, stmContinue, stmFinish). Standard ist stmNone, was eine vollständige eigenständige Nachricht sendet.

Hinweise

Diese Überladung sendet den Stream-Inhalt als binären Frame an jede Verbindung, die die Filter Channel, Protocol, Include und Exclude passiert. Der Stream wird ab seiner aktuellen Position gelesen; der Server übernimmt keinen Besitz, sodass der Aufrufer den Stream am Leben halten muss, bis Broadcast zurückkehrt. Wenn LoadBalancer aktiviert ist, wird die binäre Payload an andere Knoten weitergeleitet, damit diese sie an ihre lokalen Clients erneut zustellen können. Verwenden Sie aSize zusammen mit aStreaming, um sehr große Payloads als mehrere WebSocket-Fragmente statt als einen übergroßen Frame zu streamen.

Beispiel


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

Zurück zu Methoden