在几个WebRTC会谈中(由Philipp Hanke和Chad Hart)提到了TURN或Relay第一个WebRTC连接的主题。
总之,它们描述了如何使用“TURN first”或“Relay first”首先通过TURN服务器建立连接,然后在几秒钟内尝试建立对等连接。这应该是在启动呼叫之前最小化延迟以获得更快的呼叫开始时间。 Chad说如果修改核心WebRTC堆栈,这种事情是可能的。
有没有办法在浏览器中实现更快的TURN第一次连接,或者这只能通过WebRTC的自定义实现来实现?
如果没有,是否有任何TURN首次实现的开源示例?
答案 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。