TsgcWebSocketHTTPServer › メソッド › Broadcast
接続されているすべてのクライアントに同じ WebSocket メッセージを送信します。オプションでチャンネル、プロトコル、または接続 GUID リストによってフィルタリングされます。
procedure Broadcast(const aMessage: string; const aChannel: string = ''; const aProtocol: string = ''; const Exclude: String = ''; const Include: String = '');
| 名前 | タイプ | 説明 |
|---|---|---|
aMessage | const string | 一致する各クライアントにWebSocketテキストフレームとして配信されるテキストペイロード。 |
aChannel | const string | 空でない場合、メッセージは指定されたチャンネルをサブスクライブしているクライアントのみに送信されます。 |
aProtocol | const string | 空でない場合、メッセージは指定されたWebSocketサブプロトコルを使用するクライアントにのみ送信されます。 |
Exclude | const String | このブロードキャストでスキップする必要がある接続 GUID のカンマ区切りリスト。 |
Include | const String | ブロードキャストをそのサブセットに制限する接続 GUID のカンマ区切りリスト。空の場合は無視されます。 |
このオーバーロードは、指定されたフィルターに一致する HTTP サーバーがホストするすべてのアクティブな WebSocket 接続にテキストフレームを送信します。フィルターは AND セマンティクスで結合されます: 接続は、すべての空でないフィルターを満たす場合にのみメッセージを受信し、GUID が Exclude に表示される場合は到達しません。Broadcast は WebSocket ハンドシェイクを完了したクライアントのみをターゲットとするため、純粋な HTTP/HTTP2 リクエストは無視されます。LoadBalancer が有効な場合、呼び出しはクラスター全体に転送され、リモートノードもローカルクライアントにメッセージを配信します。呼び出しは呼び出し元のスレッドで実行され、フレームが各ソケットに渡されると返ります。接続ごとの書き込みエラーはブロードキャストを中断せずに OnException を通じて報告されます。
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);
| 名前 | タイプ | 説明 |
|---|---|---|
aStream | TStream | 各一致するクライアントに WebSocket バイナリフレームとして配信されるコンテンツのソースストリーム。呼び出し元がストリームの所有者のままです。 |
aChannel | const string | 空でない場合、メッセージは指定されたチャンネルをサブスクライブしているクライアントのみに送信されます。 |
aProtocol | const string | 空でない場合、メッセージは指定されたWebSocketサブプロトコルを使用するクライアントにのみ送信されます。 |
Exclude | const String | このブロードキャストでスキップする必要がある接続 GUID のカンマ区切りリスト。 |
Include | const String | ブロードキャストをそのサブセットに制限する接続 GUID のカンマ区切りリスト。空の場合は無視されます。 |
aSize | const Integer | オプションのフラグメントサイズ(バイト単位)。ゼロより大きい場合、各クライアントはこのサイズのフラグメントに分割されたストリームを受け取ります。0(デフォルト)を使用するとストリーム全体を単一フレームとして送信します。 |
aStreaming | const TwsStreaming | フラグメント化された送信のストリーミングモード(stmNone、stmStart、stmContinue、stmFinish)。デフォルトは stmNone で、完全なスタンドアロンメッセージを送信します。 |
このオーバーロードは、チャネル、プロトコル、Include、Exclude フィルターを通過する HTTP サーバーがホストするすべての WebSocket 接続にバイナリフレームとしてストリームコンテンツをブロードキャストします。ストリームは現在の位置から読み取られ、サーバーは所有権を取得しないため、Broadcast が返るまで呼び出し元はストリームを有効に保つ必要があります。LoadBalancer が有効な場合、バイナリペイロードは他のノードに転送され、ローカルクライアントに再配信できます。非常に大きなペイロードを1つの過大なフレームではなく複数のWebSocketフラグメントとしてストリーミングするには、aSize と aStreaming を使用します。
oStream := TMemoryStream.Create;
try
oStream.LoadFromFile('payload.bin');
oServer.Broadcast(oStream);
finally
oStream.Free;
end;