TsgcWebSocketLoadBalancerServerMéthodes › Broadcast

Broadcast Méthode

Diffuse un message WebSocket vers chaque serveur de sauvegarde du cluster, filtré éventuellement par canal, protocole ou liste de GUIDs de connexion.

Surcharges

Surcharge 1

Syntaxe

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

Paramètres

NomTypeDescription
aMessageconst stringCharge utile texte livrée à chaque client correspondant sous forme de trame texte WebSocket.
aChannelconst stringLorsqu'il est non vide, le message est envoyé uniquement aux clients abonnés au canal donné.
aProtocolconst stringLorsque non vide, le message est envoyé uniquement aux clients utilisant le sous-protocole WebSocket spécifié.
Excludeconst String Liste séparée par des virgules des GUID de connexion qui doivent être ignorés par cette diffusion.
Includeconst String Liste de GUID de connexions séparés par des virgules limitant la diffusion à ce sous-ensemble ; ignorée si vide.

Remarques

Cette surcharge envoie une trame texte via l'équilibreur de charge afin que chaque serveur de secours enregistré la redistribue à ses propres clients WebSocket connectés localement. 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 requêtes HTTP/HTTP2 pures sont ignorées car Broadcast ne cible que les clients ayant complété la négociation WebSocket. L'équilibreur de charge transmet la charge utile à chaque nœud de secours à tour de rôle ; les erreurs d'écriture par connexion sont signalées via OnException sans interrompre la diffusion. L'appel s'exécute sur le thread de l'appelant et retourne une fois les trames remises à chaque lien vers les serveurs de secours.

Exemple


oServer.Broadcast('Hello From Server');

Surcharge 2

Syntaxe

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

Paramètres

NomTypeDescription
aStreamTStream Flux source dont le contenu est délivré à chaque client correspondant sous forme de trame binaire WebSocket. L'appelant reste propriétaire du flux.
aChannelconst stringLorsqu'il est non vide, le message est envoyé uniquement aux clients abonnés au canal donné.
aProtocolconst stringLorsque non vide, le message est envoyé uniquement aux clients utilisant le sous-protocole WebSocket spécifié.
Excludeconst String Liste séparée par des virgules des GUID de connexion qui doivent être ignorés par cette diffusion.
Includeconst String Liste de GUID de connexions séparés par des virgules limitant la diffusion à ce sous-ensemble ; ignorée si vide.
aSizeconst 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.

Remarques

Cette surcharge diffuse le contenu du flux sous forme de trame binaire via le répartiteur de charge, qui transmet la charge utile à chaque serveur de sauvegarde enregistré afin qu'ils puissent la redélivrer à leurs clients WebSocket locaux. Le flux est lu depuis sa position actuelle ; le répartiteur de charge n'en prend pas la propriété, le code appelant doit donc maintenir le flux actif jusqu'au retour de Broadcast. Les filtres de canal, de protocole, Include et Exclude sont évalués sur chaque nœud de sauvegarde lors de l'envoi de la trame à ses propres connexions. Utilisez aSize conjointement avec aStreaming pour diffuser des charges utiles très volumineuses sous forme de plusieurs fragments WebSocket plutôt qu'une seule trame surdimensionnée.

Exemple


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

Retour aux méthodes