TsgcTURNServerEventos › OnTURNBeforeRelayIndication

OnTURNBeforeRelayIndication Evento

Gerado antes de o servidor retransmitir um payload Send-Indication a um peer; defina Accept como False para descartar o pacote.

Sintaxe

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

Valor Padrão

Observações

Disparado no hot-path do relay, uma vez por Send-Indication (RFC 5766 seção 10): o cliente enviou uma indicação SEND contendo dados de aplicação que devem ser encaminhados para um peer para o qual já existe uma permissão. aPeerIP/aPeerPort identificam o peer de destino (extraído de XOR-PEER-ADDRESS) e aBytes contém o payload que está prestes a ser retransmitido no relay socket da Allocation. Utilize o evento para inspecionar ou capturar o tráfego retransmitido (por exemplo, para examinar pacotes de áudio/vídeo enviados através do servidor TURN) ou para implementar limitação de taxa por peer. Defina Accept := False para descartar o datagrama silenciosamente; nenhum erro é enviado ao cliente remetente. Este evento é disparado no caminho do relay e é executado de forma síncrona, a menos que NotifyEvents o redirecione, considere neNoSync sob carga pesada para evitar back-pressure no listener. aBytes é uma view somente leitura; não modifique seu conteúdo.

Exemplo

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;

Voltar para Eventos