Ошибка WebRT C при использовании laravel и простой узел для канала данных - PullRequest
0 голосов
/ 03 мая 2020

Это мой первый проект webRT C, поэтому я очень неопытен в отслеживании подобных ошибок. Тем более, что я использую этот NPM пакет, я не знаю точно, что делать с этим сообщением об ошибке. Если вы перейдете по этой ссылке, я просто скопировал / вставил демонстрационный код «использования», но заменил его на сокеты, используя Laravel echo для передачи данных однорангового соединения. В демонстрации «использование» они генерируют объект «предложение», и вы вставляете его в форму других пиров. Затем этот клиент генерирует объект «ответа», и когда вы вставляете его в форму на клиенте-инициаторе, соединение устанавливается. Если я так делаю, все работает нормально. Но я пытаюсь установить sh автоматическое соединение, когда все клиенты готовы. Вот мой код:

var Peer = require("simple-peer");

window.p = new Peer({
    initiator: location.hash === "#1",
    trickle: false
});

p.on("error", err => console.log("error", err));

p.on("signal", data => {
    if (location.hash === "#1") {
        $.ajax({
            url: "/autoCon",
            type: "get",
            data: {
                connectionData: JSON.stringify(data)
            },
            success: function() {
                console.log("sent: " + JSON.stringify(data));
            }
        });
    }
});

p.on("connect", () => {
    console.log("CONNECT");
});

А затем на блейд-файле я слушаю с Echo следующим образом:

 Echo.channel('myChannel')
      .listen('MyEvent', (e) => {
        p.signal(e.connectionData)
      });

А теперь об ошибке:

Failed to execute 'setRemoteDescription' on 'RTCPeerConnection': Failed to set remote offer sdp: Failed to apply the description for 0: Failed to setup RTCP mux.

Если я поддерживаю журнал p.signal(e.connectionData), он показывает «undefined», что странно, поскольку он генерирует объект «answer» и отображает страницу в тексте. Итак, я попытался ajax отправить начальный объект «предложение» второму узлу, затем взять его объект «ответ» и сигнал для инициирующего узла, чтобы соединиться, когда данные получены сокетом. Но это дает мне эту ошибку. Кто-нибудь может помочь?

1 Ответ

0 голосов
/ 03 мая 2020

В итоге я понял это. Это мой последний код. Это может быть грязно, но мне потребовалось около 6 часов ночи, и это заставило мой мозг болеть XD. Если кто-нибудь может дать какой-нибудь совет о том, как его почистить, я с удовольствием возьму его, но в приложении все работает как есть.

в приложении. js:

p.on("signal", data => {
    //document.querySelector("#outgoing").textContent = JSON.stringify(data);
    $.ajax({
        url: "/autoCon",
        type: "get",
        data: {
            conData: JSON.stringify(data)
        }
    });
});

И в моем блейд-файл с использованием Echo:

var signalData = []
Echo.channel('myChannel')
          .listen('MyEvent', (e) => {
            signalData.push(e.conData)
            if(e.conData.includes('offer') && location.hash !== '#1'){
              console.log('received offer')
              p.signal(JSON.parse(e.conData))
            } else {
              if(e.conData.includes('answer') && location.hash === '#1' ){
              console.log('received answer')
              p.signal(JSON.parse(signalData[1]))
              }
            }
          });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...