TURN Server | Allocations

Alle TURN-Operationen drehen sich um Allokationen, und alle TURN-Nachrichten sind mit einer Allokation verknüpft. Eine Allokation besteht aus:

 

 

Wenn ein TURN-Client eine Allocate-Anfrage sendet, wird diese TURN-Nachricht vom Server verarbeitet, der versucht, eine neue weitergeleitete Transportadresse zu erstellen. Standardmäßig erstellt er, wenn ein verfügbarer UDP-Port vorhanden ist, eine neue weitergeleitete Adresse, aber Sie können das Ereignis OnTURNBeforeAllocate verwenden, um eine neue Allocation-Anfrage abzulehnen.

 


procedure OnTURNBeforeAllocate(Sender: TObject; const aSocket: TsgcSocketConnection; 
  const aIP: string; aPort: Word; var Reject: Boolean);
begin
  if not (your own rules) then
	Reject := false;
end;

Wenn der Prozess fortgesetzt wird, erstellt der Server eine neue Allocation, und das Ereignis OnTURNCreateAllocation wird aufgerufen. Dieses Ereignis stellt über die Klasse TsgcTURNAllocationItem Informationen über die Allocation bereit.

 


procedure OnTURNCreateAllocation(Sender: TObject; const aSocket: TsgcSocketConnection; 
  const Allocation: TsgcTURNAllocationItem);
begin
  DoLog('New Allocation: ' + Allocation.RelayIP + ':' + IntToStr(Allocation.RelayPort));
end;

 

Wenn die Allocation abläuft oder gelöscht wird, weil eine Refresh-Request mit einer Lebensdauer von null vom Client empfangen wird, wird das Ereignis OnTURNDeleteAllocation ausgelöst.

 


procedure OnTURNDeleteAllocation(Sender: TObject; const aSocket: TsgcSocketConnection; 
  const Allocation: TsgcTURNAllocationItem);
begin
  DoLog('Allocation Deleted: ' + Allocation.RelayIP + ':' + IntToStr(Allocation.RelayPort));
end;