Ошибка видеопотока WebRTC - scaledrone - PullRequest
0 голосов
/ 22 мая 2018

Кто-нибудь знает, что изменилось с WebRTC за последний месяц или два?У меня было видео-веб-приложение WebRTC, которое работало примерно два месяца назад и теперь случайно перестало работать.Я использовал scaledrone для сингла

Это учебник, которому я следовал: https://www.scaledrone.com/blog/posts/webrtc-tutorial-simple-video-chat

Единственная ошибка, которую я получаю, это то, что ничего мне не говорит:

DOMException: Failed to set local answer sdp: Called in wrong state: kStable

Демонстрацию можно посмотреть здесь: введите описание ссылки здесь

Любые идеи будут высоко оценены!

1 Ответ

0 голосов
/ 13 декабря 2018

Это RTCPeerConnection.signalingState.Возможные значения:

  • стабильный - исходное состояние.В настоящее время не происходит обмена предложением / ответом SDP
  • have-local-offer - локальная сторона соединения локально применила предложение SDP
  • have-remote-offer - удаленная сторонаподключение локально применило предложение SDP
  • have-local-pranswer - удаленное предложение SDP применено, а локально применен pranswer SDP
  • have-remote-pranswer - локальный SDP имеетбыл применен, а удаленный SDP-сервер применен удаленно
  • закрыт - соединение закрыто

Вы видите процесс согласования WebRTC на рисунке, который я добавил ниже.enter image description here

DOMException: не удалось установить локальный ответ sdp: вызван в неправильном состоянии: kStable означает, что «ваш браузер» не получает никаких предложений / ответов SDP, который вы видите на картинке выше.Это может зависеть от несовместимости браузера с реализацией Scaledrone WebRTC-Wrapper или, например, от некоторых проблем STUN, которые также относятся к реализации Scaledron.

Очень часто сообщается, что при первом использовании «нового» идентификатора канала он работает только один раз, а после этого никогда больше не запрашивает идентификатор.

Мы предполагаем, что в процессе запроса подтверждения личности существует "счет" (очередь операций) для аутентифицированных идентификаторов ( целевое значение идентификатора однорангового узла * 1035)*) который чрезвычайно нестабилен - см. - https://www.w3.org/TR/webrtc/#dom-rtcconfiguration-peeridentity.

function startWebRTC(isOfferer) 
{
  pc = new RTCPeerConnection(configuration);
    var identity = pc.peerIdentity;
    ...
    ...
    if (identity) 
    {
          alert("Identity of the peer: idp='" 
                 + identity.idp + "'; assertion='" 
                 + identity.name + "'");
    }
    else 
    {
          alert("Identity of the peer has not been verified");
    }
    ...
    ...
}

Где "конфигурация":

const configuration = {
  iceServers: [{
    urls: 'stun:stun.l.google.com:19302'
  }]
};

Debugger

https://www.w3.org/TR/webrtc/ 4.4.1.2 Поставить в очередь операцию: "... объект RTCPeerConnection имеет очередь операций [[Operations]], которая обеспечивает одновременное выполнение только одной асинхронной операции в очереди.Если последующие вызовы выполняются в то время, когда возвращенное обещание предыдущего вызова все еще не выполнено, они добавляются в очередь и выполняются, когда все предыдущие вызовы завершены и их обещания исчерпаны ... "... см. Следующие шаги...

Но оценить это крайне сложно без прямого анализа инструментов.Реализация оболочки Scaledrone WebRTC чрезвычайно чувствительна .

Нам нужно проверить RTCPeerConnection.iceConnectionState, RTCPeerConnection.peerIdentity, RTCPeerConnection.localDescription, RTCPeerConnection.remote.signalingState, ....

Я провел несколько сравнений тестов с web-сокетами nodejs с Firefox-Quantum-65.0 x64 и Chrome-71.0, которые вы можете увидеть здесь: Firefox enter image description here

Вы видите, что в этом есть большая разница.Лучший аксель

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...