0

我正在开发一个视频通话应用程序。目前使用 Xirsys 的 stun and turn 服务器。我使用https://service.xirsys.com/ice的结果作为我的配置。它是在 Javascript 页面或其他任何内容中使用的正确用户名和凭据吗?如果它是错误的,那么请指导我在哪里可以获得正确的 iceServers 值。 iceServers = [ { "url": "stun:turn01.uswest.xirsys.com" }, { "username": "0xxxxxx8-fxxc-1xx6-bxxb-bxxxxxxxxxx8", "url": "turn:turn01.uswest.xirsys.com:80?transport=udp", "credential": "0xxxxxxe-fxxc-1xx6-axx0-axxxxxxxxxx9" }, { "username": "0xxxxxx8-fxxc-1xx6-bxxb-bxxxxxxxxxx8", "url": "turn:turn01.uswest.xirsys.com:3478?transport=udp", "credential": "0xxxxxxe-fxxc-1xx6-axx0-axxxxxxxxxx9" }, { "username": "0xxxxxx8-fxxc-1xx6-bxxb-bxxxxxxxxxx8", "url": "turn:turn01.uswest.xirsys.com:80?transport=tcp", "credential": "0xxxxxxe-fxxc-1xx6-axx0-axxxxxxxxxx9" }, { "username": "0xxxxxx8-fxxc-1xx6-bxxb-bxxxxxxxxxx8", "url": "turn:turn01.uswest.xirsys.com:3478?transport=tcp", "credential": "0xxxxxxe-fxxc-1xx6-axx0-axxxxxxxxxx9" }, { "username": "0xxxxxx8-fxxc-1xx6-bxxb-bxxxxxxxxxx8", "url": "turns:turn01.uswest.xirsys.com:443?transport=tcp", "credential": "0xxxxxxe-fxxc-1xx6-axx0-axxxxxxxxxx9" }, { "username": "0xxxxxx8-fxxc-1xx6-bxxb-bxxxxxxxxxx8", "url": "turns:turn01.uswest.xirsys.com:5349?transport=tcp", "credential": "0xxxxxxe-fxxc-1xx6-axx0-axxxxxxxxxx9" } ];
注意:它在同一个网络中工作,但不在不同的网络中。即使在不同的网络中,我也可以接到来电,但在接到电话后,iceConnectionState 会失败。我在这里
也提出了类似的问题,我使用 numb 作为 stun 和 turn server。

提前致谢。

4

1 回答 1

2

ICE 字符串应该在您的 WebRTC 应用程序的 ice 配置中“按原样”使用。但是请注意,ICE 凭证仅在 30 秒内有效。您需要在每次连接之前立即请求一个新的 ICE 字符串。

本地网络连接将在没有有效 ICE 字符串的情况下工作,因为您的 NAT 转换不会使用 TURN / STUN。这是因为您的 NAT 会自行转换您的本地 IP。因此,本地网络连接将始终有效(除非您有不常见的 NAT 情况)。如果您在每次调用之前使用 ICE 凭据而不刷新它们,那肯定是您的外部连接失败的原因(或者肯定会导致问题)。

于 2017-03-02T09:54:45.643 回答