WebRTC:Firefox中缺少中继候选

WebRTC:Firefox中缺少中继候选,firefox,webrtc,turn,Firefox,Webrtc,Turn,当涉及firefox并且需要TURN服务器时,我在建立WebRTC连接时遇到问题。 使用此测试工具可以再现原因: 尝试以下stun服务器配置: URI:turn:numb.viagenie.ca 用户名:l1787875@mvrht.com 密码:test 在chrome中出现了中继候选。在firefox中,缺少了。但是为什么呢 导致Chrome 56.0.2924.87(64位): 时间组件类型基础协议地址端口优先级 0.002 1主机2969322736 udp 192.168.178.2

当涉及firefox并且需要TURN服务器时,我在建立WebRTC连接时遇到问题。 使用此测试工具可以再现原因:

尝试以下stun服务器配置:

URI:turn:numb.viagenie.ca

用户名:l1787875@mvrht.com

密码:test

在chrome中出现了中继候选。在firefox中,缺少了。但是为什么呢

导致Chrome 56.0.2924.87(64位):

时间组件类型基础协议地址端口优先级
0.002 1主机2969322736 udp 192.168.178.29 58537 126 | 30 | 255
0.002 1主机1665573758 udp 2001::34ad:4890:3ce5:1be4:aa2b:d831 58538 126 | 10 | 255
0.002 2主机2969322736 udp 192.168.178.29 58539 126 | 30 | 254
0.003 2主机1665573758 udp 2001::34ad:4890:3ce5:1be4:aa2b:d831 58540 126 | 10 | 254
0.544 1 srflx 842163049 udp 85.212.39.206 58537 100 | 30 | 255
0.553 2 srflx 842163049 udp 85.212.39.206 58539 100 | 30 | 254
0.658 1中继3433799847 udp 66.228.45.110 57491 2 | 30 | 255
0.677 2中继3433799847 udp 66.228.45.110 57492 2 2 | 30 | 254
完成0.678

Firefox 51.0.1(32位)的结果:

时间组件类型基础协议地址端口优先级
0.008 1主机0 UDP 192.168.178.29 52762 126 | 32512 | 255
0.009 1主机3 UDP 2001:0:9d38:6abd:82d:1d5a:aa2b:d831 52763 126 | 32256 | 255
0.009 2主机0 UDP 192.168.178.29 52764 126 | 32512 | 254
0.009 2主机3 UDP 2001:0:9d38:6abd:82d:1d5a:aa2b:d831 52765 126 | 32256 | 254
11.234联系不到?

当我测试它时,TURN服务器响应486“已达到分配配额”。从现在起,我再也找不到Chrome或Firefox的中继候选人了,我想你的回合提供商已经禁用了你在这里发布的凭据。 如果您可以复制它,我建议您看看Firefox中的about:webrtc。它应该有一些日志消息,指出哪里出了问题。如果您在日志中看到可疑的内容,那么可能是一个值得在bugzilla.mozilla.org上填写的bug

更新:我能够重现这个问题。这是Firefox TURN客户端的一个bug。我为它创建了这个bug跟踪问题


更新2:Firefox 54中的错误已经修复。详细的解释是,coturn在其对Firefox的回复消息中包含了带宽属性。此带宽属性从未被正式标准化。而带宽属性所在的范围要求,如果客户端不理解该属性,则将其视为解析失败。除了带宽属性的过期草案明确指出理解带宽属性的含义是可选的之外。因此,一个糟糕的规范尝试+一个实现了从未正式规范过的东西的服务器+一个不了解结果的客户端。

你能列出你看到的候选对象吗?即使在Chrome中,我也看不到接力赛候选人。例如,在ICE选项下,如果我将ICE Transports value:设置为中继,我将看到零个候选项。你是对的。我已经编辑了这个问题。看起来配额不再超过了,我在关于上看到了以下错误消息:webrtc(我今天晚些时候会看到):无法识别的属性:0x0010 STUN-CLIENT(中继(IP4:10.252.27.46:50759/UDP | numb.viagenie.ca:3478)::TURN):收到响应;处理STUN-CLIENT(中继(IP4:10.252.27.46:50759/UDP | numb.viagenie.ca:3478)::回合):错误处理响应:操作被拒绝,STUN错误代码0。ICE(PC:1486673561857884(id=2147488911 url=):消息与任何已注册的stun ctxOk不对应,我的WebRTC专有技术有限,但我的应用程序代码似乎没有问题。理论上很好,但在服务器端或客户端是否有解决方案可以让它运行?我还尝试过与科顿一起拍摄docker的照片。同样的问题。不,这不是你的应用程序代码中的问题。问题是coturn sends在其消息中添加了Firefox无法正确处理的属性。这个问题已经在Firefox54(现在是Firefox夜间版)中修复。我不知道您是否可以将coturn配置为不发送带宽属性。在检查日志后,我发现ios webrtc native也存在同样的问题,如果(!config | | config->relays.empty()){//此配置中未指定中继端口。sequence| flags |=PORTALLOCATOR|u DISABLE_relay;}有人可以帮助吗?我使用谷歌眩晕服务器不会给你中继候选人,因为它不是一个回合服务器。只有轮换服务器才能给我们的接力候选者。