TsgcTURNServerイベント › OnTURNBeforeRelayIndication

OnTURNBeforeRelayIndication イベント

サーバーがSend-Indicationペイロードをピアに中継する前に発生します。パケットを破棄するにはAcceptをFalseに設定します。

構文

property OnTURNBeforeRelayIndication: TsgcTURNBeforeRelayIndicationEvent;
// TsgcTURNBeforeRelayIndicationEvent = procedure(Sender: TObject; const aSocket: TsgcSocketConnection; const aPeerIP: string; aPeerPort: Word; const aBytes: TBytes; var Accept: Boolean) of object

デフォルト値

解説

リレーのホットパスで、Send インジケーション(RFC 5766 セクション 10)ごとに 1 回発生します。クライアントが権限がすでに存在するピアに転送する必要のあるアプリケーションデータを含む SEND インジケーションを送信しました。aPeerIP/aPeerPort はターゲットピアを識別し(XOR-PEER-ADDRESS から取得)、aBytes はアロケーションのリレーソケット上で中継されようとしているペイロードを含みます。リレーされたトラフィックを検査またはキャプチャするため(たとえば TURN サーバーを通じて送信される音声/映像パケットのスニッフィング)、またはピアごとのレートリミットを実装するためにイベントを使用します。Accept := False に設定するとデータグラムをサイレントに破棄します。送信クライアントにはエラーが送信されません。このイベントはリレーパスで発生し、NotifyEvents がリダイレクトしない限り同期的に実行されます。高負荷時にリスナーへのバックプレッシャーを避けるため neNoSync を検討してください。aBytes は読み取り専用ビューです。内容を変更しないでください。

使用例

procedure TForm1.OnTURNBeforeRelayIndication(Sender: TObject;
  const aSocket: TsgcSocketConnection; const aPeerIP: string; aPeerPort: Word;
  const aBytes: TBytes; var Accept: Boolean);
begin
  vBytesRelayed := vBytesRelayed + Length(aBytes);
  Accept := True;
end;

イベントに戻る