获取WebRTC连接的可用和活动的ICE候选者



我在不同网络上的两个用户之间的WebRTC连接出现了一个奇怪的问题。

用户A使用的是手机热点,用户B使用的是我家WiFi。

当用户A是第一个加入页面的用户时,该用户向用户B发送要约和一些ICE候选;失败";(safari(或";断开";(铬(。用户A和用户B无法设置工作的WebRTC连接。

然而,当用户B是第一个加入页面&创建报价,用户A发回答案,两个用户都可以毫无问题地连接。

在这两种情况下,用户A&用户B都有一个看起来正确的localDescription&remoteDescription,但在连接失败的第二种情况下,connectionState&CCD_ 2是";失败";(safari(或";断开";(chrome(。

我在RTCPeerConnection的配置中使用了TURN和STUN服务器,并使用Trickle ICE WebRTC示例测试了服务器是否正常工作

我怀疑用户A或用户B无法看到或使用其他用户的所有可用ICE候选,但我不确定如何最好地解决问题。对于给定的RTCPeerConnection对象,有没有一种简单的方法可以查看哪些ICE候选可用/活动?

更新:

查看chrome://webrtc-internals(正如philipp hancke所建议的(表明

如果用户B发送要约:4个ICE候选对可用(2个host、1个srflx、1个relay(为用户B选择使用外部IP的ICE候选对,为用户a选择TURN服务器中继。连接正常。

如果用户A发送报价:同样,有4个ICE候选对可用(2个host、1个srflx、1个relay(,但ICE候选对显示(not connected),并且没有进行WebRTC连接

更新2:我已经接受了Philipp Hancke的回答,因为它回答了我最初提出的问题,即使是它,我还没有解决我的问题。我在这里问了一个新问题。

这听起来像是webrtc中长期存在的错误。使用TURN服务器通常可以解决这个问题,这解释了为什么这不是任何人都可以优先处理的问题

chrome://webrtc-internals是调试此类问题的一站式位置。

最新更新