TsgcTURNServer › 事件 › OnTURNDeleteAllocation
在分配被移除后触发,原因可能是客户端将刷新次数降为零,或分配的生命周期已过期。
property OnTURNDeleteAllocation: TsgcTURNAllocationEvent;
// TsgcTURNAllocationEvent = procedure(Sender: TObject; const aSocket: TsgcSocketConnection; const Allocation: TsgcTURNAllocationItem) of object
—
每次分配(Allocation)拆除时触发一次:当客户端以 lifetime = 0 发出 REFRESH 请求、分配生命周期在服务器内部计时器到期,或服务器本身被停用(Active := False)时。Allocation 仍公开 Username、RelayIP/RelayPort、Permissions、Channels 和最后的 Expiry 的最终快照,可用于发送计费记录、关闭仪表板或释放每用户资源。当删除操作由到期计时器驱动而非客户端请求时,aSocket 可能为 nil。处理程序返回后,服务器将立即释放 Allocation 实例,请勿保留该引用。除非 NotifyEvents 进行了重定向,否则在监听器/计时器线程上运行。
procedure TForm1.OnTURNDeleteAllocation(Sender: TObject;
const aSocket: TsgcSocketConnection; const Allocation: TsgcTURNAllocationItem);
begin
Memo1.Lines.Add(Format('Allocation deleted: user=%s relay=%s:%d',
[Allocation.Username, Allocation.RelayIP, Allocation.RelayPort]));
end;