TsgcWebSocketServerMethods › Broadcast

Broadcast Metodo

Invia lo stesso messaggio a tutti i client connessi, filtrandolo facoltativamente 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 a ogni connessione attiva che corrisponde ai filtri forniti. I filtri sono 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. Quando LoadBalancer è abilitato, la chiamata viene inoltrata attraverso il cluster in modo che i nodi remoti consegnino anch'essi il messaggio ai propri client locali. La chiamata viene eseguita nel thread del chiamante e restituisce il controllo una volta che i frame sono stati consegnati a ogni socket; gli errori di scrittura per singola connessione vengono segnalati tramite OnException senza interrompere la trasmissione.

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 a ogni connessione 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 mantenerlo attivo fino al ritorno di Broadcast. 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 multipli frammenti WebSocket anziché un unico frame di dimensioni eccessive.

Esempio


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

Torna ai Metodi