TsgcTURNServer › Events › OnTURNBeforeRelayChannelData
Wywoływane przed przekazaniem przez serwer ładunku ChannelData do peera; ustawienie właściwości Accept na False powoduje odrzucenie pakietu.
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
—
Wywoływane na gorącej ścieżce przekazywania dla ruchu ChannelData (RFC 5766 sekcja 11): lekkie ramkowanie 4-bajtowe stosowane przez TURN zamiast wskazań Send/Data po powiązaniu kanału przez CHANNEL-BIND. Parametr aRelayType wskazuje kierunek przekazywania (klient-do-peera lub peer-do-klienta), a parametry aPeerIP/aPeerPort identyfikują zdalny punkt końcowy. Parametr aChannelData udostępnia numer kanału i bajty ładunku, które mają zostać przekazane. Za pomocą tego zdarzenia można inspekcjonować strumień mediów (audio/wideo przechodzący przez serwer TURN) lub wymuszać limity przepustowości per kanał. Ustawienie Accept := False powoduje ciche odrzucenie datagramu bez wysyłania błędu do żadnej ze stron. Zdarzenie jest wywoływane dla każdego przekazanego pakietu ChannelData, dlatego procedura obsługi powinna być zwięzła; działa synchronicznie, chyba że właściwość NotifyEvents ją przekieruje. W przypadku dużego obciążenia należy używać wartości neNoSync, aby uniknąć wywierania wstecznego ciśnienia na 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;