TsgcWebSocketProxyServer › メソッド › 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 に表示される場合は到達しません。フレームは各トンネルのブラウザ向け側に書き込まれます。ペアになったアップストリーム TCP リンクは変更されないため、バックエンド向けのデータは接続ごとの転送パスを通じてプッシュする必要があります。LoadBalancer が有効な場合、呼び出しはクラスター全体に転送され、リモートノードもローカルクライアントにメッセージを配信します。呼び出しは呼び出し元のスレッドで実行され、フレームが各ソケットに渡されると返ります。接続ごとの書き込みエラーはブロードキャストを中断せずに OnException を通じて報告されます。

使用例


oServer.Broadcast('Hello From Proxy 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フラグメント化された送信のストリーミングモード(stmNone、stmStart、stmContinue、stmFinish)。デフォルトは stmNone で、完全なスタンドアロンメッセージを送信します。

解説

このオーバーロードは、チャンネル、プロトコル、Include および Exclude フィルターを通過するすべての WebSocket 接続にストリームの内容をバイナリフレームとしてブロードキャストします。ストリームは現在の位置から読み取られます。サーバーは所有権を取得しないため、呼び出し元は Broadcast が返るまでストリームを維持する必要があります。バイナリペイロードは各トンネルのブラウザー側にのみ配信されます。Proxy バックエンドに接続する上流の TCP クライアントはこの呼び出しで書き込まれません。LoadBalancer が有効な場合、バイナリペイロードは他のノードに転送され、ローカルクライアントに再配信できます。非常に大きなペイロードを 1 つの過大なフレームではなく複数の WebSocket フラグメントとしてストリーミングするには、aStreaming と共に aSize を使用してください。

使用例


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

メソッドに戻る