TsgcTURNServer › 事件 › OnTURNBeforeRelayChannelData
在服务器将 ChannelData 负载中继给对等方之前触发;将 Accept 设置为 False 以丢弃数据包。
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
—
在 ChannelData 流量(RFC 5766 第 11 节)的中继热路径上触发:TURN 在通过 CHANNEL-BIND 绑定通道后使用的轻量级 4 字节帧格式,代替 Send/Data 指示。aRelayType 指示中继方向(客户端到对端,或对端到客户端),aPeerIP/aPeerPort 标识远程端点。aChannelData 公开通道编号和即将转发的负载字节。使用此事件检查媒体流(通过 TURN 服务器捕获的音频/视频)或强制执行每通道速率限制。将 Accept := False 设置为静默丢弃数据报,不向任何一方发送错误。此事件对每个中继的 ChannelData 数据包触发,因此请保持处理程序精简;同步运行,除非 NotifyEvents 重定向它。在持续负载下使用 neNoSync 以避免监听器背压。
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;