TsgcTURNServerÉvénements › OnTURNBeforeRelayIndication

OnTURNBeforeRelayIndication Événement

Levé avant que le serveur relaie une charge utile Send-Indication vers un pair ; définissez Accept sur False pour abandonner le paquet.

Syntaxe

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

Valeur par défaut

Remarques

Déclenché sur le chemin de relais chaud, une fois par Send-Indication (RFC 5766 section 10) : le client a envoyé une indication SEND portant des données d'application qui doivent être transmises à un pair pour lequel une permission existe déjà. aPeerIP/aPeerPort identifient le pair cible (pris depuis XOR-PEER-ADDRESS) et aBytes contient la charge utile qui est sur le point d'être relayée sur le socket de relais de l'Allocation. Utilisez l'événement pour inspecter ou capturer le trafic relayé (par exemple pour renifler les paquets audio/vidéo envoyés via le serveur TURN) ou pour implémenter une limitation de débit par pair. Définissez Accept := False pour supprimer silencieusement le datagramme ; aucune erreur n'est envoyée au client expéditeur. Cet événement se déclenche sur le chemin de relais et s'exécute de manière synchrone sauf si NotifyEvents le redirige — envisagez neNoSync sous forte charge pour éviter la contre-pression sur l'auditeur. aBytes est une vue en lecture seule ; ne modifiez pas son contenu.

Exemple

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;

Retour aux événements