TsgcWebSocketServer_HTTPAPIMetody › Broadcast

Broadcast Metoda

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ń.

Przeciążenia

Przeciążenie 1

Składnia

procedure Broadcast(const aMessage: string; const aChannel: string = ''; const aProtocol: string = ''; const Exclude: String = ''; const Include: String = '');

Parametry

NazwaTypOpis
aMessageconst stringŁadunek tekstowy dostarczany do każdego pasującego klienta jako ramka tekstowa WebSocket.
aChannelconst stringJeśli wartość jest niepusta, wiadomość jest wysyłana wyłącznie do klientów subskrybujących podany kanał.
aProtocolconst stringJeżeli parametr nie jest pusty, wiadomość jest wysyłana tylko do klientów korzystających z podanego subprotokołu WebSocket.
Excludeconst StringLista identyfikatorów GUID połączeń oddzielona przecinkami, które mają zostać pominięte przez to rozgłoszenie.
Includeconst StringRozdzielona przecinkami lista identyfikatorów GUID połączeń ograniczająca rozgłaszanie do tego podzbioru; ignorowana, gdy jest pusta.

Uwagi

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.

Przykład


oServer.Broadcast('Hello From Server');

Przeciążenie 2

Składnia

procedure Broadcast(aStream: TStream; const aChannel: string = ''; const aProtocol: string = ''; const Exclude: String = ''; const Include: String = ''; const aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone);

Parametry

NazwaTypOpis
aStreamTStreamStrumień ź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.
aChannelconst stringJeśli wartość jest niepusta, wiadomość jest wysyłana wyłącznie do klientów subskrybujących podany kanał.
aProtocolconst stringJeżeli parametr nie jest pusty, wiadomość jest wysyłana tylko do klientów korzystających z podanego subprotokołu WebSocket.
Excludeconst StringLista identyfikatorów GUID połączeń oddzielona przecinkami, które mają zostać pominięte przez to rozgłoszenie.
Includeconst StringRozdzielona przecinkami lista identyfikatorów GUID połączeń ograniczająca rozgłaszanie do tego podzbioru; ignorowana, gdy jest pusta.
aSizeconst IntegerOpcjonalny 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ę.
aStreamingconst TwsStreamingTryb strumieniowania dla pofragmentowanej transmisji (stmNone, stmStart, stmContinue, stmFinish). Domyślnie stmNone, co wysyła kompletną, samodzielną wiadomość.

Uwagi

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.

Przykład


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

Powrót do metod