WebRT C - предложение-ответ происходит дважды - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь реализовать вызов WebRT C в js, но я не уверен, почему происходит эта странная вещь.

Мой вопрос похож на этот вопрос . Но ответы не исправляют это в моем случае, и я использую последние браузеры FF и Chrome.

Вот что происходит:

Узел A отправляет ПРЕДЛОЖЕНИЕ Узлу B.

Узел B отправляет ответ ОТВЕТ Узлу A.

Узел B отправляет предложение на одноранговый узел A.

Одноранговый узел A отправляет ответный ответ на одноранговый узел B.

То, что предлагает моя отладка, заключается в том, что, когда Peer B выполняет приведенный ниже код, событие negotiationneeded срабатывает, что в моем понимании не должно происходить.

const answer = await myPeerConnection.createAnswer();
await myPeerConnection.setLocalDescription(answer);

Когда Пир А ответил на предложение Пир Б., вызов работает.

В двух словах, вызывающая сторона должна стать вызываемой для вызова. работать.

Если вам нужно больше кода, пожалуйста, дайте мне знать.

1 Ответ

0 голосов
/ 28 апреля 2020

У меня возникла проблема.

Я опубликую ответ здесь, если кто-нибудь в будущем столкнется с той же проблемой.

Место, где я добавлял свой поток с камеры в RTCPeerConnection I использовал:

webcamStream.getTracks().forEach(
        transceiver = track => myPeerConnection.addTransceiver(track, {streams: [webcamStream]})
      );

Я заменил выше на ниже:

webcamStream.getTracks().forEach(track => myPeerConnection.addTrack(track, webcamStream));

Я не уверен, что является лучшим способом для go. Но я прочитаю об обоих этих способах, чтобы не вводить новые ошибки, пока исправляю эту проблему.

...