TsgcWebSocketLoadBalancerServerメソッド › Broadcast

Broadcast メソッド

WebSocket メッセージをクラスター内のすべてのバックアップ サーバーにファンアウトします。チャンネル、プロトコル、または接続 GUID リストでオプションのフィルタリングができます。

オーバーロード

オーバーロード 1

構文

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

パラメータ

名前タイプ説明
aMessageconst string一致する各クライアントにWebSocketテキストフレームとして配信されるテキストペイロード。
aChannelconst string空でない場合、メッセージは指定されたチャンネルをサブスクライブしているクライアントのみに送信されます。
aProtocolconst string空でない場合、メッセージは指定されたWebSocketサブプロトコルを使用するクライアントにのみ送信されます。
Excludeconst Stringこのブロードキャストでスキップする必要がある接続 GUID のカンマ区切りリスト。
Includeconst Stringブロードキャストをそのサブセットに制限する接続 GUID のカンマ区切りリスト。空の場合は無視されます。

解説

このオーバーロードはロードバランサーを通じてテキストフレームを送信し、登録されたすべてのバックアップサーバーが自身のローカル接続されたWebSocketクライアントに再配信します。フィルターはANDセマンティクスで結合されます。接続はすべての非空フィルターを満たす場合にのみメッセージを受信し、そのGUIDがExcludeに含まれている場合は到達しません。純粋なHTTP/HTTP2リクエストはBroadcastがWebSocketハンドシェイクを完了したクライアントのみを対象とするため無視されます。ロードバランサーはペイロードを各バックアップノードに順に転送します。接続ごとの書き込みエラーはブロードキャストを中断せずにOnExceptionを通じて報告されます。この呼び出しは呼び出し元のスレッドで実行され、各バックアップサーバーへのリンクにフレームが渡されると返ります。

使用例


oServer.Broadcast('Hello From Server');

オーバーロード 2

構文

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

パラメータ

名前タイプ説明
aStreamTStream各一致するクライアントに WebSocket バイナリフレームとして配信されるコンテンツのソースストリーム。呼び出し元がストリームの所有者のままです。
aChannelconst string空でない場合、メッセージは指定されたチャンネルをサブスクライブしているクライアントのみに送信されます。
aProtocolconst string空でない場合、メッセージは指定されたWebSocketサブプロトコルを使用するクライアントにのみ送信されます。
Excludeconst Stringこのブロードキャストでスキップする必要がある接続 GUID のカンマ区切りリスト。
Includeconst Stringブロードキャストをそのサブセットに制限する接続 GUID のカンマ区切りリスト。空の場合は無視されます。
aSizeconst Integerオプションのフラグメントサイズ(バイト単位)。ゼロより大きい場合、各クライアントはこのサイズのフラグメントに分割されたストリームを受け取ります。0(デフォルト)を使用するとストリーム全体を単一フレームとして送信します。
aStreamingconst TwsStreamingフラグメント化された送信のストリーミングモード(stmNonestmStartstmContinuestmFinish)。デフォルトは stmNone で、完全なスタンドアロンメッセージを送信します。

解説

このオーバーロードはロードバランサーを通じてストリームコンテンツをバイナリフレームとしてブロードキャストします。ロードバランサーはペイロードをすべての登録済みバックアップサーバーに転送し、それらがローカルのWebSocketクライアントに再配信できるようにします。ストリームは現在の位置から読み取られます。ロードバランサーは所有権を取得しないため、呼び出し元はBroadcastが返るまでストリームをアライブに保つ必要があります。チャンネル、プロトコル、Include、Excludeフィルターは各バックアップノードが自身の接続にフレームをディスパッチするときに評価されます。非常に大きなペイロードを1つの過大なフレームではなく複数のWebSocketフラグメントとしてストリーミングするにはaSizeaStreamingを使用してください。

使用例


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

メソッドに戻る