我有一个 webrtc 应用程序,它工作正常,但出于测试目的,我需要测试我的 TURN 服务器是否工作,但因为两个测试设备都在同一网络内,所以我无法测试,认为下面的代码会限制候选人仅那些使用 TURN 服务器的,
function onIceCandidate(event, targetSessionID, targetUserName) {
if (event.candidate) {
var candidate = event.candidate.candidate;
if(candidate.indexOf("relay")<0){ // if no relay address is found, assuming it means no TURN server
return;
}
sendMessage(candidate); // using socket.io to send to the otherside
...
但我注意到(非常沮丧),这不起作用,因为当同行创建答案描述时,
....
a=candidate:0 1 UDP 2128609535 13.198.98.221 58779 typ host
a=candidate:0 2 UDP 2128609534 13.198.98.221 58780 typ host
....
这意味着,通信是直接的,而不是通过 TURN 服务器,我的假设是否正确?现在,如何强制 webrtc 使用 TURN 服务器?
我不知道浏览器是否或何时支持此功能,但请查看 Draft-ietf-rtcweb-jsep-08 第 4.1.1 节中的“ICE 候选策略”,您可以看到如何将策略设置为“中继”会做你想做的事。在当前的 W3C API 草案中,这是使用配置中的iceTranportPolicy 字段的RTCIceTransportPolicy 值“relay”来设置的。在中搜索 RTCIceTransportPolicyhttps://w3c.github.io/webrtc-pc/ https://w3c.github.io/webrtc-pc/
relay:ICE 代理仅使用媒体中继候选,例如
通过 TURN 服务器的候选人。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)