ProjectRTC/webRTC с сетями 3G/4G

Я работаю с ProjectRTC и успешно протестировал его с Firefox и клиентом Android. Я поместил код сервера на удаленный сервер (digitalocean), получая доступ через мой домашний компьютер.

Однако все работает нормально, пока я не протестирую его с помощью домашнего ADSL или (более медленного) ADSL для ПК с Firefox и сети 3G/4G для клиента Android.

Если я использую сеть 3G/4G для своего компьютера через свой мобильный телефон (используя опцию точки доступа), он пытается подключиться к клиенту, но я получаю сообщение об ошибке «Ice Failed» на консоли javascript.

Я попытался добавить клиент 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 failed".

Я также пытался прочитать это , но я не думаю, что это то, что я ищу. У вас есть идеи, как заставить это работать с мобильными соединениями?

Заранее спасибо за проявленный интерес!


person Don Diego    schedule 04.05.2016    source источник
comment
у меня такая же проблема. ты смог это решить?   -  person pregmatch    schedule 17.01.2019


Ответы (1)


Не жестко кодируйте строку ICE. Строка XirSys ICE чувствительна ко времени и истечет через 30 секунд. Вам нужно запросить новую строку ICE для каждого соединения. Это может решить вашу проблему, а может и нет, но по крайней мере исключит строку ICE как проблему.

С уважением, Ли

person Lee Sylvester    schedule 04.05.2016
comment
спасибо, я только что следовал этому руководству: xirsys.com/guide, в котором говорится: этот токен должен быть реализован только в защищенная среда, такая как приложение на стороне сервера или скомпилированное приложение на стороне клиента. Невыполнение этого требования приведет к тому, что нежелательные пользователи перехватят вашу пропускную способность TURN и другие недостатки безопасности. Однако для простоты мы собираемся нарушить это правило только один раз и инициировать соединение WebRTC со стороны клиента через запрос POST jQuery. так и возникла мысль навести порядок когда она заработает! Однако я пытался, но не получилось =( - person Don Diego; 05.05.2016