具有3G/4G网络的ProjectRTC/webRTC

ProjectRTC/webRTC with 3G/4G Networks

本文关键字:ProjectRTC webRTC 4G 3G 具有 网络      更新时间:2023-09-26

我正在使用ProjectRTC,并成功地在Firefox和android客户端上进行了测试。我把服务器代码放在远程服务器(digitalocean)上,通过我的家用电脑访问

然而,一切都很好,直到我用家庭ADSL测试它,或者用Firefox的电脑用(较慢的)ADSL,安卓客户端用3G/4G网络测试它。

如果我通过手机(使用热点选项)为我的电脑使用3G/4G网络,它会尝试连接到客户端,但我收到错误javascript控制台上的"Ice Failed"。

我试图在上添加一个TURN客户端

public/javascripts/rtcClient.js

添加以下内容:

var localId,
config = {
  peerConnectionConfig: {
    iceServers: [
      /*test*/
      {
        "username":"e7db750a-2fcc-40c6-8415-cab22743a68a",
        "url": "turn:turn1.xirsys.com:443?transport=tcp",
        "credential":"287ae254-9380-4f81-af88-e1cc9ed27eb0"
      },
      {
        "username":"e7db750a-2fcc-40c6-8415-cab22743a68a",
        "url": "turn:turn1.xirsys.com:443?transport=udp",
        "credential":"287ae254-9380-4f81-af88-e1cc9ed27eb0"
      },
      /*end test*/
      {
      "url": "stun:stun.l.google.com:19305"
      }
  ]
  },
  peerConnectionConstraints: {
    optional: [{
      "DtlsSrtpKeyAgreement": true,
    }]
  }
},
peerDatabase = {},
localStream,
remoteVideoContainer = document.getElementById('remoteVideosContainer'),
socket = io();
socket.on('message', handleMessage);
socket.on('id', function(id) {
localId = id;
});

但我仍然没有运气,再次被"ICE失败"。

我也试着读过这篇文章,但我不认为这是我要寻找的。你有什么想法让它与移动连接配合使用吗?

提前感谢您的关注!

不要对ICE字符串进行硬编码。XirSys ICE字符串是时间敏感的,将在30秒后过期。您需要为每个连接请求一个新的ICE字符串。这可能会解决你的问题,也可能不会,但它至少会排除ICE字符串是问题所在。

谨致问候,Lee