我正在开发一个视频通话应用程序。目前正在使用Xirsys的眩晕和转向服务器。我使用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失败了
我也提出了类似的问题here,其中我使用麻木作为晕眩和转向服务器。
提前致谢。
答案 0 :(得分:2)
ICE字符串应该在WebRTC应用程序的ice配置中“按原样”使用。但请注意,ICE凭证仅在30秒内有效。您需要在每次连接之前立即请求新的ICE字符串。
本地网络连接将无法使用有效的ICE字符串,因为您的NAT转换不会使用TURN / STUN。这是因为您的NAT会转换您的本地IP。因此,本地网络连接将始终有效(除非您有非常见的NAT情况)。如果您在每次调用之前使用ICE凭据而不刷新它们,那肯定是您的外部连接失败的原因(或者肯定会导致问题)。
利