WebRTC IceGathering随状态改变';完成';使用回合时开火时间太长(~分钟)

WebRTC IceGathering随状态改变';完成';使用回合时开火时间太长(~分钟),webrtc,sip,turn,restcomm,peer-connection,Webrtc,Sip,Turn,Restcomm,Peer Connection,情景: 我在iOS上使用WebRTC(谷歌的libjingle),PeerConnection是使用TURN服务器设置的,我在等待所有候选对象聚集在一起,然后再将它们发送给对等方(我使用SIP)。问题是,尽管所有候选对象都在大约1-3秒钟内收集(我可以在日志中看到),但直到大约一整分钟后,才使用state GatheringComplete调用iceGatheringChanged()回调 知道为什么会这样吗 在使用Google的ApprtDemo for iOS分析流量后,似乎要启动Gathe

情景:

我在iOS上使用WebRTC(谷歌的libjingle),PeerConnection是使用TURN服务器设置的,我在等待所有候选对象聚集在一起,然后再将它们发送给对等方(我使用SIP)。问题是,尽管所有候选对象都在大约1-3秒钟内收集(我可以在日志中看到),但直到大约一整分钟后,才使用state GatheringComplete调用iceGatheringChanged()回调

知道为什么会这样吗

在使用Google的ApprtDemo for iOS分析流量后,似乎要启动GatheringComplete,客户端需要​已经收到来自远方的候选人​, 这是因为它似乎需要设置TURN分配,并在新分配上添加权限,以便可以与对等方交换数据。是这样吗?如果是,为什么


致以最诚挚的问候

您是否实时为两党交换候选人?你说得对,TURN客户端要求另一方候选人在TURN服务器中创建权限,并创建检查列表以启动ICE处理。

这听起来很有趣,所以我尝试在我们的应用程序中检查它。我尝试了两种配置:一种配置有回合服务器和两个眩晕服务器,另一种配置没有回合,只有两个眩晕服务器。在这两种情况下,都需要1分钟20秒才能到达iceConnectionState==“已完成”。在WebRTC库中似乎是一个超时,但不幸的是,我现在没有时间检查它。