TsgcWebSocketLoadBalancerServer › Yöntemler › Broadcast
Bir WebSocket mesajını kümedeki her yedek sunucuya, isteğe bağlı olarak kanal, protokol veya bağlantı GUID listesine göre filtrelenmiş olarak yayar.
procedure Broadcast(const aMessage: string; const aChannel: string = ''; const aProtocol: string = ''; const Exclude: String = ''; const Include: String = '');
| Name | Type | Açıklama |
|---|---|---|
aMessage | const string | Eşleşen her istemciye WebSocket metin çerçevesi olarak teslim edilen metin yükü. |
aChannel | const string | Boş olmadığında, mesaj yalnızca verilen kanala abone olan istemcilere gönderilir. |
aProtocol | const string | Boş olmadığında, mesaj yalnızca verilen WebSocket alt protokolünü kullanan istemcilere gönderilir. |
Exclude | const String | Bu yayında atlanması gereken bağlantı GUID'lerinin virgülle ayrılmış listesi. |
Include | const String | Yayını (broadcast) o alt kümeyle sınırlayan, virgülle ayrılmış bağlantı GUID'leri listesi; boş olduğunda göz ardı edilir. |
Bu aşırı yükleme, yük dengeleyici aracılığıyla bir metin çerçevesi gönderir, böylece her kayıtlı yedek sunucu onu kendi yerel olarak bağlı WebSocket istemcilerine yeniden teslim eder. Filtreler AND semantiğiyle birleştirilir: bir bağlantı, mesajı yalnızca boş olmayan her filtreyi karşıladığında alır ve GUID'i Exclude'da göründüğünde asla ulaşılmaz. Saf HTTP/HTTP2 istekleri yoksayılır çünkü Broadcast yalnızca WebSocket handshake'ini tamamlayan istemcileri hedefler. Yük dengeleyici yükü sırayla her yedek düğüme iletir; bağlantı başına yazma hataları, yayını durdurmadan OnException aracılığıyla bildirilir. Çağrı, çağıranın iş parçacığında çalışır ve çerçeveler yedek sunuculara giden her bağlantıya teslim edildikten sonra geri döner.
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);
| Name | Type | Açıklama |
|---|---|---|
aStream | TStream | İçeriği eşleşen her istemciye WebSocket ikili çerçevesi (binary frame) olarak iletilen kaynak stream'i. Çağıran, stream'in sahibi olmaya devam eder. |
aChannel | const string | Boş olmadığında, mesaj yalnızca verilen kanala abone olan istemcilere gönderilir. |
aProtocol | const string | Boş olmadığında, mesaj yalnızca verilen WebSocket alt protokolünü kullanan istemcilere gönderilir. |
Exclude | const String | Bu yayında atlanması gereken bağlantı GUID'lerinin virgülle ayrılmış listesi. |
Include | const String | Yayını (broadcast) o alt kümeyle sınırlayan, virgülle ayrılmış bağlantı GUID'leri listesi; boş olduğunda göz ardı edilir. |
aSize |
const Integer | İsteğe bağlı bayt cinsinden parça boyutu; sıfırdan büyük olduğunda her istemci stream'i bu boyutta parçalara bölünmüş olarak alır. Tüm stream'i tek bir çerçeve olarak göndermek için 0 (varsayılan) kullanın. |
aStreaming | const TwsStreaming | Parçalı iletim için akış modu (stmNone, stmStart, stmContinue, stmFinish). Tam, bağımsız bir mesaj gönderen stmNone varsayılandır. |
Bu aşırı yükleme, akış içeriğini yük dengeleyici aracılığıyla bir ikili çerçeve olarak yayınlar, bu da yükü kayıtlı her yedek sunucuya iletir, böylece bunlar yükü kendi yerel WebSocket istemcilerine yeniden teslim edebilir. Akış geçerli konumundan okunur; yük dengeleyici sahiplik almaz, dolayısıyla çağıran, Broadcast dönene kadar akışı canlı tutmalıdır. Kanal, protokol, Include ve Exclude filtreleri, her yedek düğümde çerçeveyi kendi bağlantılarına gönderdikçe değerlendirilir. Çok büyük yükleri tek bir aşırı boyutlu çerçeve yerine birden çok WebSocket parçası olarak akıtmak için aSize öğesini aStreaming ile birlikte kullanın.
oStream := TMemoryStream.Create;
try
oStream.LoadFromFile('payload.bin');
oServer.Broadcast(oStream);
finally
oStream.Free;
end;