TsgcWebSocketProxyServer › Méthodes › Broadcast
Envoie le même message à tous les clients WebSocket connectés sur le proxy, filtré optionnellement par canal, protocole ou liste de GUID de connexion.
procedure Broadcast(const aMessage: string; const aChannel: string = ''; const aProtocol: string = ''; const Exclude: String = ''; const Include: String = '');
| Nom | Type | Description |
|---|---|---|
aMessage | const string | Charge utile texte livrée à chaque client WebSocket correspondant sous forme de trame texte. |
aChannel | const string | Lorsqu'il est non vide, le message est envoyé uniquement aux clients abonnés au canal donné. |
aProtocol | const string | Lorsque non vide, le message est envoyé uniquement aux clients utilisant le sous-protocole WebSocket spécifié. |
Exclude | const String
| Liste séparée par des virgules des GUID de connexion qui doivent être ignorés par cette diffusion. |
Include | const String
| Liste de GUID de connexions séparés par des virgules limitant la diffusion à ce sous-ensemble ; ignorée si vide. |
Cette surcharge envoie une trame texte à chaque connexion WebSocket active qui correspond aux filtres fournis. Les filtres sont combinés avec une sémantique AND : une connexion reçoit le message uniquement lorsqu'elle satisfait chaque filtre non vide, et n'est jamais atteinte lorsque son GUID apparaît dans Exclude. Les trames sont écrites côté navigateur de chaque tunnel ; la liaison TCP amont associée n'est pas touchée, donc les données destinées au backend doivent être transmises via le chemin de transfert par connexion. Lorsque LoadBalancer est activé, l'appel est transmis à l'ensemble du cluster afin que les nœuds distants délivrent également le message à leurs clients locaux. L'appel s'exécute sur le thread appelant et retourne une fois les trames remises à chaque socket ; les erreurs d'écriture par connexion sont signalées via OnException sans interrompre la diffusion.
oServer.Broadcast('Hello From Proxy 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);
| Nom | Type | Description |
|---|---|---|
aStream | TStream
| Flux source dont le contenu est livré à chaque client WebSocket correspondant sous forme de trame binaire. L'appelant reste propriétaire du flux. |
aChannel | const string | Lorsqu'il est non vide, le message est envoyé uniquement aux clients abonnés au canal donné. |
aProtocol | const string | Lorsque non vide, le message est envoyé uniquement aux clients utilisant le sous-protocole WebSocket spécifié. |
Exclude | const String
| Liste séparée par des virgules des GUID de connexion qui doivent être ignorés par cette diffusion. |
Include | const String
| Liste de GUID de connexions séparés par des virgules limitant la diffusion à ce sous-ensemble ; ignorée si vide. |
aSize | const Integer
| Taille de fragment optionnelle en octets ; lorsqu'elle est supérieure à zéro, chaque client reçoit le flux découpé en fragments de cette taille. Utilisez 0 (valeur par défaut) pour envoyer le flux entier en une seule trame. |
aStreaming
| const TwsStreaming
| Mode de streaming pour la transmission fragmentée (stmNone, stmStart, stmContinue, stmFinish). La valeur par défaut est stmNone, qui envoie un message autonome complet. |
Cette surcharge diffuse le contenu du flux sous forme de trame binaire à chaque connexion WebSocket qui passe les filtres de canal, de protocole, d'inclusion et d'exclusion. Le flux est lu depuis sa position actuelle ; le serveur n'en prend pas possession, donc l'appelant doit maintenir le flux actif jusqu'au retour de Broadcast. La charge utile binaire est délivrée uniquement côté navigateur de chaque tunnel ; les clients TCP en amont alimentant le backend Proxy ne sont pas écrits par cet appel. Lorsque LoadBalancer est activé, la charge utile binaire est transmise aux autres nœuds afin qu'ils puissent la re-délivrer à leurs clients locaux. Utilisez aSize conjointement avec aStreaming pour diffuser de très grandes charges utiles sous forme de plusieurs fragments WebSocket au lieu d'une seule trame surdimensionnée.
oStream := TMemoryStream.Create;
try
oStream.LoadFromFile('payload.bin');
oServer.Broadcast(oStream);
finally
oStream.Free;
end;