TsgcWebSocketLoadBalancerServerMetodi › Broadcast

Broadcast Metodo

Distribuisce un messaggio WebSocket a tutti i server di backup nel cluster, con filtro opzionale per canale, protocollo o elenco di GUID di connessione.

Overload

Overload 1

Sintassi

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

Parametri

NomeTipoDescrizione
aMessageconst stringPayload testuale consegnato a ogni client corrispondente come frame di testo WebSocket.
aChannelconst stringSe non è vuoto, il messaggio viene inviato solo ai client sottoscritti al canale specificato.
aProtocolconst stringSe non vuoto, il messaggio viene inviato solo ai client che utilizzano il sotto-protocollo WebSocket specificato.
Excludeconst StringElenco separato da virgole di GUID di connessione che devono essere esclusi da questo broadcast.
Includeconst StringElenco separato da virgole di GUID di connessione che limitano la trasmissione a quel sottoinsieme; ignorato quando vuoto.

Note

Questo overload invia un frame di testo attraverso il load balancer affinché ogni server backup registrato lo riconsegni ai propri client WebSocket connessi localmente. I filtri sono combinati con semantica AND: una connessione riceve il messaggio solo quando soddisfa tutti i filtri non vuoti, e non viene mai raggiunta se il suo GUID compare in Exclude. Le pure richieste HTTP/HTTP2 vengono ignorate perché Broadcast punta solo ai client che hanno completato l'handshake WebSocket. Il load balancer inoltra il payload a ciascun nodo backup in sequenza; gli errori di scrittura per connessione vengono segnalati tramite OnException senza interrompere il broadcast. La chiamata viene eseguita sul thread del chiamante e ritorna non appena i frame sono stati consegnati a ciascun collegamento verso i server backup.

Esempio


oServer.Broadcast('Hello From Server');

Sovraccarico 2

Sintassi

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

Parametri

NomeTipoDescrizione
aStreamTStreamStream sorgente il cui contenuto viene consegnato a ogni client corrispondente come frame binario WebSocket. Il chiamante rimane il proprietario dello stream.
aChannelconst stringSe non è vuoto, il messaggio viene inviato solo ai client sottoscritti al canale specificato.
aProtocolconst stringSe non vuoto, il messaggio viene inviato solo ai client che utilizzano il sotto-protocollo WebSocket specificato.
Excludeconst StringElenco separato da virgole di GUID di connessione che devono essere esclusi da questo broadcast.
Includeconst StringElenco separato da virgole di GUID di connessione che limitano la trasmissione a quel sottoinsieme; ignorato quando vuoto.
aSizeconst IntegerDimensione facoltativa del frammento in byte; quando è maggiore di zero ogni client riceve lo stream suddiviso in frammenti di questa dimensione. Utilizzare 0 (il valore predefinito) per inviare l'intero stream come un singolo frame.
aStreamingconst TwsStreamingModalità di streaming per la trasmissione frammentata (stmNone, stmStart, stmContinue, stmFinish). Il valore predefinito è stmNone, che invia un messaggio completo autonomo.

Note

Questo overload trasmette il contenuto dello stream come frame binario attraverso il load balancer, che inoltra il payload a ogni server di backup registrato affinché possano riconsegnarlo ai propri client WebSocket locali. Lo stream viene letto dalla sua posizione corrente; il load balancer non ne acquisisce la proprietà, quindi il chiamante deve mantenere lo stream attivo fino al ritorno di Broadcast. I filtri di canale, protocollo, Include ed Exclude vengono valutati su ogni nodo di backup mentre invia il frame alle proprie connessioni. Utilizzare aSize insieme a aStreaming per trasmettere payload molto grandi come più frammenti WebSocket anziché un singolo frame sovradimensionato.

Esempio


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

Torna ai Metodi