TsgcWebSocketProxyServer › Yöntemler › Broadcast
Aynı mesajı, isteğe bağlı olarak kanal, protokol veya bağlantı GUID listesine göre filtreleyerek proxy'deki tüm bağlı WebSocket istemcilerine gönderir.
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 WebSocket istemcisine bir 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, sağlanan filtrelerle eşleşen her etkin WebSocket bağlantısına bir metin çerçevesi gönderir. Filtreler VE semantiğiyle birleştirilir: bir bağlantı yalnızca boş olmayan her filtreyi karşıladığında mesajı alır ve GUID'i Exclude içinde göründüğünde asla ulaşılmaz. Çerçeveler her tünelin tarayıcıya bakan tarafına yazılır; eşleştirilmiş yukarı akış TCP bağlantısına dokunulmaz, bu nedenle arka uca yönelik veri bunun yerine bağlantı başına iletme yolu üzerinden gönderilmelidir. LoadBalancer etkinleştirildiğinde çağrı küme genelinde iletilir, böylece uzak düğümler de mesajı yerel istemcilerine teslim eder. Çağrı, çağıranın iş parçacığında çalışır ve çerçeveler her sokete teslim edildiğinde döner; bağlantı başına yazma hataları, yayını durdurmadan OnException aracılığıyla raporlanır.
oServer.Broadcast('Hello From Proxy 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 her eşleşen WebSocket istemcisine ikili çerçeve olarak teslim edilen kaynak stream. Çağıran, stream'in sahibi olarak kalır. |
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, stream içeriğini kanal, protokol, Include ve Exclude filtrelerini geçen her WebSocket bağlantısına ikili çerçeve olarak yayınlar. Stream geçerli konumundan okunur; sunucu sahipliği almaz, bu nedenle çağıran, Broadcast dönene kadar stream'i canlı tutmalıdır. İkili yük yalnızca her tünelin tarayıcıya bakan tarafında teslim edilir; Proxy arka ucunu besleyen yukarı akış TCP istemcilerine bu çağrıyla yazılmaz. LoadBalancer etkin olduğunda, ikili yük diğer düğümlere iletilir, böylece onu kendi yerel istemcilerine yeniden teslim edebilirler. Çok büyük yükleri tek bir aşırı boyutlu çerçeve yerine birden fazla WebSocket parçası olarak akışla aktarmak için aSize ile aStreaming'i birlikte kullanın.
oStream := TMemoryStream.Create;
try
oStream.LoadFromFile('payload.bin');
oServer.Broadcast(oStream);
finally
oStream.Free;
end;