TsgcTURNServer › Eventi › OnTURNBeforeRelayChannelData
Generato prima che il server inoltri un payload ChannelData a un peer; impostare Accept su False per scartare il pacchetto.
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
—
Si attiva sull'hot-path del relay per il traffico ChannelData (RFC 5766 sezione 11): il framing leggero a 4 byte che TURN utilizza al posto delle indicazioni Send/Data una volta che un canale è stato associato con CHANNEL-BIND. aRelayType indica la direzione del relay (da client a peer o da peer a client) e aPeerIP/aPeerPort identificano l'endpoint remoto. aChannelData espone il numero del canale e i byte del payload che stanno per essere inoltrati. Utilizzi l'evento per ispezionare il flusso multimediale (audio/video acquisito tramite il server TURN) o per applicare limiti di velocità per canale. Imposti Accept := False per scartare silenziosamente il datagramma — non viene inviato alcun errore a nessuna delle due parti. Questo evento si attiva per ogni pacchetto ChannelData inoltrato, quindi mantenga il gestore leggero; viene eseguito in modo sincrono a meno che NotifyEvents non lo rediriga. Utilizzi neNoSync in condizioni di carico sostenuto per evitare back-pressure sul listener.
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;