TsgcWebSocketServer_HTTPAPI › Metody › Broadcast
Wysyła tę samą wiadomość do wszystkich połączonych klientów, opcjonalnie filtrując według kanału, protokołu lub listy identyfikatorów GUID połączeń.
procedure Broadcast(const aMessage: string; const aChannel: string = ''; const aProtocol: string = ''; const Exclude: String = ''; const Include: String = '');
| Nazwa | Typ | Opis |
|---|---|---|
aMessage | const string | Ładunek tekstowy dostarczany do każdego pasującego klienta jako ramka tekstowa WebSocket. |
aChannel | const string | Jeśli wartość jest niepusta, wiadomość jest wysyłana wyłącznie do klientów subskrybujących podany kanał. |
aProtocol | const string | Jeżeli parametr nie jest pusty, wiadomość jest wysyłana tylko do klientów korzystających z podanego subprotokołu WebSocket. |
Exclude | const String | Lista identyfikatorów GUID połączeń oddzielona przecinkami, które mają zostać pominięte przez to rozgłoszenie. |
Include | const String | Rozdzielona przecinkami lista identyfikatorów GUID połączeń ograniczająca rozgłaszanie do tego podzbioru; ignorowana, gdy jest pusta. |
To przeciążenie wysyła ramkę tekstową do każdego aktywnego połączenia WebSocket spełniającego podane filtry. Filtry są łączone semantyką AND: połączenie otrzyma wiadomość tylko wtedy, gdy spełnia wszystkie niepuste filtry i nie pojawia się w parametrze Exclude. Gdy właściwość Asynchronous jest włączona, wywołanie powraca przed zakończeniem każdego zapisu http.sys, a zdarzenie OnAsynchronous raportuje ukończenie; w trybie synchronicznym wywołanie jest wykonywane w wątku wywołującym i powraca po kolejkowaniu ramek dla każdego gniazda. Błędy zapisu per-połączenie są raportowane przez OnException bez przerywania rozgłaszania.
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);
| Nazwa | Typ | Opis |
|---|---|---|
aStream | TStream | Strumień źródłowy, którego zawartość jest dostarczana do każdego pasującego klienta jako binarna ramka WebSocket. Wywołujący pozostaje właścicielem strumienia. |
aChannel | const string | Jeśli wartość jest niepusta, wiadomość jest wysyłana wyłącznie do klientów subskrybujących podany kanał. |
aProtocol | const string | Jeżeli parametr nie jest pusty, wiadomość jest wysyłana tylko do klientów korzystających z podanego subprotokołu WebSocket. |
Exclude | const String | Lista identyfikatorów GUID połączeń oddzielona przecinkami, które mają zostać pominięte przez to rozgłoszenie. |
Include | const String | Rozdzielona przecinkami lista identyfikatorów GUID połączeń ograniczająca rozgłaszanie do tego podzbioru; ignorowana, gdy jest pusta. |
aSize | const Integer | Opcjonalny rozmiar fragmentu w bajtach; gdy większy od zera, każdy klient odbiera strumień podzielony na fragmenty o tym rozmiarze. Użyć 0 (domyślnie), aby wysłać cały strumień jako pojedynczą ramkę. |
aStreaming | const TwsStreaming | Tryb strumieniowania dla pofragmentowanej transmisji (stmNone, stmStart, stmContinue, stmFinish). Domyślnie stmNone, co wysyła kompletną, samodzielną wiadomość. |
To przeciążenie rozsyła zawartość strumienia jako binarną ramkę do każdego połączenia przechodzącego przez filtry kanału, protokołu, Include i Exclude. Strumień jest czytany od bieżącej pozycji; serwer nie przejmuje jego własności, więc wywołujący musi utrzymywać strumień do czasu zwrócenia Broadcast (lub — gdy włączone jest Asynchronous — do czasu, gdy zdarzenie OnAsynchronous zgłosi ukończenie). Użyj aSize razem z aStreaming, aby przesyłać strumieniowo bardzo duże ładunki jako wiele fragmentów WebSocket zamiast jednej ogromnej ramki, co jest szczególnie przydatne w przypadku http.sys, gdzie jądro buforuje dane wychodzące.
oStream := TMemoryStream.Create;
try
oStream.LoadFromFile('payload.bin');
oServer.Broadcast(oStream);
finally
oStream.Free;
end;