TsgcTURNServerEventos › OnTURNBeforeRelayChannelData

OnTURNBeforeRelayChannelData Event

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

Sintaxe

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

Valor Padrão

Observações

Disparado no caminho crítico (hot-path) do relay para o tráfego ChannelData (RFC 5766 seção 11): o enquadramento leve de 4 bytes que o TURN usa em vez de indicações Send/Data depois que um canal foi vinculado com CHANNEL-BIND. aRelayType indica a direção do relay (cliente-para-peer vs peer-para-cliente) e aPeerIP/aPeerPort identificam o endpoint remoto. aChannelData expõe o número do canal e os bytes de payload que estão prestes a ser encaminhados. Use o evento para inspecionar o fluxo de mídia (áudio/vídeo capturado através do servidor TURN) ou para impor limites de taxa por canal. Defina Accept := False para descartar o datagrama silenciosamente — nenhum erro é enviado a qualquer parte. Este evento é disparado para cada pacote ChannelData retransmitido, portanto mantenha o handler enxuto; executa de forma síncrona, a menos que NotifyEvents o redirecione. Use neNoSync sob carga sustentada para evitar back-pressure no listener.

Exemplo

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;

Voltar para Eventos