Google Chrome 中不会生成中继候选项

问题描述 投票:0回答:2

为了测试我是否获得中继候选人,我使用此页面:http://googlechrome.github.io/webrtc/samples/web/content/peerconnection/trickle-ice/。为了从 chrome 40 进行测试,我在那里提供了我的转向网址和凭据。单击“收集候选者”后,我看不到任何中继候选者。在 Firefox 36 上进行相同的测试,我找到了中继候选者。可能的问题是什么?为了进一步调查这个问题,我查看了wireshark日志。我发现,来自 Firefox 的 stun 请求格式包括 -

STUN 146 Allocate Request UDP lifetime: 3600 user: lazy realm:  with nonce

但是从 chrome 来看,这略有不同 -

STUN 70 Allocate Request UDP

好像请求码不一样。此外,来自 chrome 的请求不包括生命周期、用户和领域属性。

webrtc stun turn rfc5766turnserver
2个回答
1
投票

我知道这个问题已经有点老了,但是根据我的经验,TURN 服务器描述格式(关于身份验证)必须在 Chrome 和 Firefox 中采用不同的格式。

对于 Chrome,您可以使用:{"url": "turn:[email protected]", credential:"password"},

对于 Firefox,格式为: {“url”:“turn:turn.example.com”,'hasCredentials':true,用户名:“用户”,凭据:“密码”},

也许您可以检查源代码以了解示例中的轮次服务器是如何设置的。

编辑: 同时,规范中服务器列表的格式已更改(https://www.w3.org/TR/webrtc/#rtciceserver-dictionary)。目前我知道的所有实现都支持该格式:

{ "urls": ["turns:turn.example.org", "turn:turn.example.net"],
   "username": "user",
   "credential": "myPassword",
   "credentialType": "password"
}

在 Edge 上,您似乎需要在 url 中包含查询字符串 ?transport=udp。


0
投票

这个问题已经有好几年了,但我相信这和我刚才看到的问题是一样的。我正在 Android 移动设备上测试一个 Web 应用程序,并且遇到了我认为相同的问题:虽然我在 Web 端配置中设置了一个 Turn 服务器,但当我启动连接时,它不会连接并在 chrome 中查找: //webrtc-internals 我可以看到中继根本没有作为ice候选者出现。我捕获了主机端的流量,我可以看到,尽管服务器正在发送质询,但客户端从未尝试进行身份验证。我尝试了很多不同的方法,终于弄清楚了问题所在(并且在多次谷歌搜索后我无法找到任何内容)。我在服务器配置中将该领域留空。我不认为这会是一个问题,但如果领域为空,Android 实现似乎根本不会尝试发送凭据。一旦我将其设置为非空字符串,浏览器就会发送凭据并且工作正常。我可以在上面的问题中看到,由于消息的格式为

,因此您的领域可能也为空

STUN 146 分配请求 UDP 生存期:3600 用户:惰性领域:带有随机数

所以......已经九年了,我猜你以某种方式解决了你的问题或放弃了这个,但我打赌这会解决它。

© www.soinside.com 2019 - 2024. All rights reserved.