Форум программистов, компьютерный форум, киберфорум
brain-4-me
Войти
Регистрация
Восстановить пароль
Оценить эту запись

Incompatible sdp

Запись от brain-4-me размещена 18.06.2020 в 10:37

Добрый день друзья!
В продолжении предыдущей темы про подключение клиентов WebRTC когда браузер уж долго искал ICE кандидатов для подключения.
Прошло три месяца с моей правки в JsSIP клиенте для быстрого подключения к первому попавшемуся ICE кандидату. все было хорошо. звонок соединялся в течении 5 секунд...я тогда и не подозревал что такое WebRTC и все эти ICE кандидаты...

Сделав звонилку на основе JsSIP + OnlinePBX я решил углубится в эту тему, пересмотрел много роликов хотел переделать полностью мой код подключения и настройки соединения но пучина будней втянула меня и я про все это благополучно забыл.

Но вот пару дней назад звонит клиент и говорит ваша звонилка не работает
Ну это не в первый раз я начал проходится по стандартным причинам
- Вы пробовали перезагрузить?
- Да. не звонит, после 5 секунд звонок срывается

- У Вас все хорошо с интернетом (были проблемы что интернет тупит и ничего не звонит)
- Да. с интернетом все хорошо

Я подключаюсь к роутеру клиента смотрю чтобы были обязательно проброшены порты

443 [TCP] — HTTPS;
80 [TCP] — HTTP;
8093-8094 [TCP] — Websokets (Для работы API);
5060-5080 [TCP / UDP] — SIP Сигнальные порты;
16384-32768 [UDP] — RTP передача голосового соединения;
3478 [UDP] — STUN;
8082 [TCP] — webRTC

все проброшено. не работает....

Было принято решение пройтись по логам подключения в JsSIP (благо там все настроено за нас это надо только включить)
Javascript
1
  JsSIP.debug.enable('JsSIP:*');
включаем смотрим в консоль.

Клиент авторизуется.....ok

Начинаем звонок

1. Проходит сигнальный до сервера OnlinePbx (не буду уточнять что там и как если интересно расскажу)
2. JsSIP собирает ICE кандидатов (почему то собрал и получил всего двух...странно на рабочем собирает от 8 до 10)
3. Отправляет кодеки который он поддерживает на клиенте и вот тут то падает...

Кодеки отправляет такие UDP/TLS/RTP/SAVPF сервер отвечает хрен тебе я такого не поддерживаю что странно с рабочего отправляются точно такие и поддерживаются...

Разбираемся...сидел пробовал. тыкал поставил ожидание ICE кандидатов 10 секунд то же самое...
гуглил, много гуглил на 100500 странице гугла уже от безысходности открывают американоязычный сайт вообще с другой проблемой: парень пишет что у него провайдет сидит за 100500 NAT И никак не получалось получить адрес клиента который сигналил на сервер для установки связи...заинтересовало а вдруг...

решение пришло само собой (ну и + подсказка на форуме) добавить stun серверов чтобы было больше возможностей обхода NAT и получение адреса клиента и вуаля! Добавил еще 4 STUN сервера и все заработало. Камень с плеч. Звоню клиенту говорю проверяйте!

Итого звонок соединяется менее 3 сек. хотя ожидание ICE кандидатов стоит 5 сек. связь намного стабильниее и устойчивее (до этого пропадал звук ну не думаю что это связано)

Итого код
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
    options = {
      eventHandlers   : eventHandlers,
      mediaConstraints : { 'audio': 1, 'video': false },
      rtcOfferConstraints: {'offerToReceiveAudio': 1, 'offerToReceiveVideo': false},
      sessionTimersExpires: 7200,
      iceRestart: true,
      pcConfig: {
        iceServers: [
          { 'urls': ['stun:stun.l.google.com:19302','stun:stun01.sipphone.com','stun:stun.ideasip.com','stun:s1.voipstation.jp','stun:stun.services.mozilla.com'] },
        ]
      }
    };
Мой вывод.
Не стоит ограничиваться одним STUN адресом даже если он от гугла.

p.s. Тех.поддержка сказала что использовать стоит только stun:stun.l.google.com:19302
Размещено в Без категории
Просмотров 123 Комментарии 0
Всего комментариев 0
Комментарии
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.