WebRTC - 不同网络之间的通信

时间:2017-07-11 14:42:59

标签: javascript android webrtc stun

我正在开发一个项目,用于在Android应用程序和网页之间创建WebRTC通信(基于Angular 2)。

我创建了两个应用程序,当两个设备在同一网络中时,通信正常工作。

我的问题是两个网络的情况。为此,我使用了TURN服务器。

在我的Angular应用程序中,我添加了如下的RTCConfiguration:

conf: RTCConfiguration = {'iceServers': [
    { 'urls': 'stun:numb.viagenie.ca'}
]};

...

this.pc = new RTCPeerConnection(this.conf);

在我的Android应用程序中,我使用了这个:

iceServers.add(new PeerConnection.IceServer("stun:numb.viagenie.ca"));

我还测试了Google TURN服务器(stun:stun.l.google.com:19302)。

在WebRTC内部的日志中,两种情况之间的唯一区别是,当我们在两个不同的网络之间使用应用程序时,我从未收到IceConnectionChanged: CONNECTED

我看到很多关于同一主题的帖子,但没有一个帮助过我。

任何人都可以帮助我?

谢谢

1 个答案:

答案 0 :(得分:0)

正如jib所说,你没有获得任何免费的TS更好的尝试在你的一台服务器机器上安装COTURN(opensource,然后尝试xirsys等)作为TS,但在此之前尝试测试你的用户背后的任何网络防火墙是,是对称的。如果任何用户在对称防火墙后面,那么只有TURN服务器才有用。

同时晕眩:stun.l.google.com:19302您提到的服务器是STUN服务器而不是TURN。还要检查其他网络内容,如UDP泛洪,并且在任何防火墙的任何地方都不会进行带宽限制。