如何与WebRTC实现TURN首次ICE连接?

时间:2018-05-11 20:34:26

标签: webrtc

在几个WebRTC会谈中(由Philipp HankeChad Hart)提到了TURN或Relay第一个WebRTC连接的主题。

总之,它们描述了如何使用“TURN first”或“Relay first”首先通过TURN服务器建立连接,然后在几秒钟内尝试建立对等连接。这应该是在启动呼叫之前最小化延迟以获得更快的呼叫开始时间。 Chad说如果修改核心WebRTC堆栈,这种事情是可能的。

有没有办法在浏览器中实现更快的TURN第一次连接,或者这只能通过WebRTC的自定义实现来实现?

如果没有,是否有任何TURN首次实现的开源示例?

1 个答案:

答案 0 :(得分:2)

有几种选择: 1)设置冰策略进行中继,建立呼叫,然后将冰策略更改为所有并重新启动冰。这在性能方面是最好的,冰重启费用相当多。需要setConfiguration,仅在Chrome 58+中可用,有关详细信息,请参阅https://bugs.chromium.org/p/webrtc/issues/detail?id=4591#c26

2)更改addIceCandidate调用的顺序,并且只添加类型为relay的候选者。冰连接状态变为连接后,添加所有其他候选。这有效,但只是近似性能。

3)如果您使用的是原生webrtc堆栈,https://bugs.chromium.org/p/webrtc/issues/detail?id=4591为此实现了一个选项。它不会遗漏Javascript。