TsgcTURNServer › イベント › OnTURNBeforeRelayChannelData
サーバーがChannelDataペイロードをピアにリレーする前に発生します。パケットを破棄するにはAcceptをFalseに設定します。
property OnTURNBeforeRelayChannelData: TsgcTURNBeforeRelayChannelDataEvent;
// TsgcTURNBeforeRelayChannelDataEvent = procedure(Sender: TObject; const aSocket: TsgcSocketConnection; aRelayType: TsgcTURNRelayChannelDataType; const aPeerIP: string; aPeerPort: Word; const aChannelData: TsgcTURNChannelData; var Accept: Boolean) of object
—
ChannelData トラフィックのリレーホットパスで発生します(RFC 5766 セクション11): チャネルが CHANNEL-BIND でバインドされた後にTURNが Send/Data インジケーションの代わりに使用する軽量4バイトフレーミング。aRelayType はリレーの方向(クライアントからピアまたはピアからクライアント)を示し、aPeerIP/aPeerPort はリモートエンドポイントを識別します。aChannelData はチャネル番号と転送されようとしているペイロードバイトを公開します。このイベントを使用してメディアストリーム(TURNサーバーを通じてキャプチャされたオーディオ/ビデオ)を検査したり、チャネルごとのレート制限を強制したりします。データグラムを静かにドロップするには Accept := False に設定します。どちらの当事者にもエラーは送信されません。このイベントはリレーされたすべてのChannelDataパケットに対して発生するため、ハンドラーを軽量に保ちます。NotifyEvents がリダイレクトしない限り同期的に実行されます。持続的な負荷下でリスナーのバックプレッシャーを回避するには neNoSync を使用します。
procedure TForm1.OnTURNBeforeRelayChannelData(Sender: TObject;
const aSocket: TsgcSocketConnection; aRelayType: TsgcTURNRelayChannelDataType;
const aPeerIP: string; aPeerPort: Word; const aChannelData: TsgcTURNChannelData;
var Accept: Boolean);
begin
Accept := True;
end;