Serveur TURN | Allocations

Toutes les opérations TURN s'articulent autour des allocations et tous les messages TURN sont associés à une allocation. Une allocation se compose de :

 

 

Lorsqu'un client TURN envoie une requête Allocate, ce message TURN est traité par le serveur qui tente de créer une nouvelle adresse de transport relayée. Par défaut, s'il existe un port UDP disponible, il créera une nouvelle adresse relayée, mais vous pouvez utiliser l'événement OnTURNBeforeAllocate pour rejeter une nouvelle demande d'allocation.

 


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;

Si le processus continue, le serveur crée une nouvelle allocation et l'événement OnTURNCreateAllocation est appelé. Cet événement fournit des informations sur l'Allocation via la classe TsgcTURNAllocationItem.

 


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

 

Lorsque l'allocation expire ou est supprimée après réception d'une requête Refresh du client avec une durée de vie égale à zéro, l'événement OnTURNDeleteAllocation est déclenché.

 


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