TsgcWebSocketServer_HTTPAPI › Metodi › Broadcast
Invia lo stesso messaggio a tutti i client connessi, filtrandolo facoltativamente per canale, protocollo o elenco di GUID di connessione.
procedure Broadcast(const aMessage: string; const aChannel: string = ''; const aProtocol: string = ''; const Exclude: String = ''; const Include: String = '');
| Nome | Tipo | Descrizione |
|---|---|---|
aMessage | const string | Payload testuale consegnato a ogni client corrispondente come frame di testo WebSocket. |
aChannel | const string | Se non è vuoto, il messaggio viene inviato solo ai client sottoscritti al canale specificato. |
aProtocol | const string | Se non vuoto, il messaggio viene inviato solo ai client che utilizzano il sotto-protocollo WebSocket specificato. |
Exclude | const String | Elenco separato da virgole di GUID di connessione che devono essere esclusi da questo broadcast. |
Include | const String | Elenco separato da virgole di GUID di connessione che limitano la trasmissione a quel sottoinsieme; ignorato quando vuoto. |
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.
oServer.Broadcast('Hello From Server');
procedure Broadcast(aStream: TStream; const aChannel: string = ''; const aProtocol: string = ''; const Exclude: String = ''; const Include: String = ''; const aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone);
| Nome | Tipo | Descrizione |
|---|---|---|
aStream | TStream | Stream sorgente il cui contenuto viene consegnato a ogni client corrispondente come frame binario WebSocket. Il chiamante rimane il proprietario dello stream. |
aChannel | const string | Se non è vuoto, il messaggio viene inviato solo ai client sottoscritti al canale specificato. |
aProtocol | const string | Se non vuoto, il messaggio viene inviato solo ai client che utilizzano il sotto-protocollo WebSocket specificato. |
Exclude | const String | Elenco separato da virgole di GUID di connessione che devono essere esclusi da questo broadcast. |
Include | const String | Elenco separato da virgole di GUID di connessione che limitano la trasmissione a quel sottoinsieme; ignorato quando vuoto. |
aSize | const Integer | Dimensione 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. |
aStreaming | const TwsStreaming | Modalità di streaming per la trasmissione frammentata (stmNone, stmStart, stmContinue, stmFinish). Il valore predefinito è stmNone, che invia un messaggio completo autonomo. |
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.
oStream := TMemoryStream.Create;
try
oStream.LoadFromFile('payload.bin');
oServer.Broadcast(oStream);
finally
oStream.Free;
end;