TsgcWebSocketServer_HTTPAPIMetodi › 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 WebSocket attiva che corrisponde ai filtri forniti. I filtri vengono combinati con semantica AND: una connessione riceve il messaggio solo se soddisfa ogni filtro non vuoto, e non viene mai raggiunta quando il suo GUID compare in Exclude. Quando Asynchronous è abilitato, la chiamata ritorna prima che ogni scrittura http.sys sia completata e l'evento OnAsynchronous segnala il completamento; quando disabilitato, la chiamata viene eseguita nel thread del chiamante e ritorna una volta che i frame sono in coda per ogni socket. Gli errori di scrittura per connessione vengono segnalati tramite OnException senza interrompere il broadcast.

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 sovraccarico 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à, quindi il chiamante deve mantenere lo stream attivo fino al ritorno di Broadcast (o, quando Asynchronous è abilitato, fino a quando l'evento OnAsynchronous segnala il completamento). Utilizzare aSize insieme a aStreaming per trasmettere payload molto grandi come più frammenti WebSocket invece di un unico frame sovradimensionato, il che è particolarmente utile su HTTP.sys dove il kernel bufferizza i dati in uscita.

Esempio


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

Torna ai Metodi