TsgcTURNServerEreignisse › OnTURNBeforeRelayIndication

OnTURNBeforeRelayIndication Ereignis

Wird ausgelöst, bevor der Server eine Send-Indication-Nutzlast an einen Peer weiterleitet; setzen Sie Accept auf False, um das Paket zu verwerfen.

Syntax

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

Standardwert

Hinweise

Wird auf dem Relay-Hot-Path ausgelöst, einmal pro Send-Indication (RFC 5766 Abschnitt 10): der Client hat eine SEND-Indication mit Anwendungsdaten gesendet, die an einen Peer weitergeleitet werden müssen, für den bereits eine Berechtigung besteht. aPeerIP/aPeerPort identifizieren den Ziel-Peer (entnommen aus XOR-PEER-ADDRESS) und aBytes enthält die Nutzlast, die gleich auf dem Relay-Socket der Allocation weitergeleitet wird. Verwenden Sie das Ereignis, um den weitergeleiteten Verkehr zu inspizieren oder zu erfassen (beispielsweise um durch den TURN-Server gesendete Audio-/Videopakete mitzuschneiden) oder um eine Pro-Peer-Ratenbegrenzung zu implementieren. Setzen Sie Accept := False, um das Datagramm stillschweigend zu verwerfen; es wird kein Fehler an den sendenden Client gesendet. Dieses Ereignis wird auf dem Relay-Pfad ausgelöst und läuft synchron, sofern NotifyEvents es nicht umleitet — erwägen Sie neNoSync bei hoher Last, um Gegendruck auf den Listener zu vermeiden. aBytes ist eine schreibgeschützte Ansicht; ändern Sie ihren Inhalt nicht.

Beispiel

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;

Zurück zu Ereignissen