TsgcWebSocketProxyServer › Methods › Broadcast

Broadcast Metodo

Invia lo stesso messaggio a tutti i client WebSocket connessi al proxy, 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 di testo consegnato a ciascun client WebSocket corrispondente come frame di testo.
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 a ogni connessione WebSocket attiva che corrisponde ai filtri forniti. I filtri vengono combinati con semantica AND: una connessione riceve il messaggio solo quando soddisfa ogni filtro non vuoto e non viene mai raggiunta quando il suo GUID compare in Exclude. I frame vengono scritti sul lato browser di ogni tunnel; il link TCP upstream accoppiato non viene toccato, quindi i dati destinati al backend devono essere inviati attraverso il percorso di inoltro per connessione. Quando LoadBalancer è abilitato, la chiamata viene inoltrata nel cluster affinché anche i nodi remoti consegnino il messaggio ai propri client locali. La chiamata viene eseguita sul thread del chiamante e ritorna una volta che i frame vengono consegnati a ciascun socket; gli errori di scrittura per singola connessione vengono segnalati tramite OnException senza interrompere la trasmissione.

Esempio


oServer.Broadcast('Hello From Proxy 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 ciascun client WebSocket corrispondente come frame binario. 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 a ogni connessione WebSocket che supera i filtri di canale, protocollo, Include ed Exclude. Lo stream viene letto dalla posizione corrente; il server non ne acquisisce la proprietà, pertanto il chiamante deve mantenere lo stream attivo fino al ritorno di Broadcast. Il payload binario viene consegnato solo sul lato browser di ogni tunnel; i client TCP upstream che alimentano il backend Proxy non vengono scritti da questa chiamata. Quando LoadBalancer è abilitato, il payload binario viene inoltrato agli altri nodi affinché possano riconsegnarlo ai propri client locali. Utilizzare aSize insieme a aStreaming per trasmettere payload molto grandi come più frammenti WebSocket anziché un unico frame di grandi dimensioni.

Esempio


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

Torna ai Metodi