首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对数据通道使用laravel和simple-peer时出现WebRTC错误

对数据通道使用laravel和simple-peer时出现WebRTC错误
EN

Stack Overflow用户
提问于 2020-05-03 13:16:27
回答 1查看 401关注 0票数 0

这是我的第一个webRTC项目,所以我在跟踪这类错误方面非常缺乏经验。特别是因为我使用的是this NPM包,我不知道如何处理这个错误消息。如果您使用该链接,我只是复制/粘贴了"usage“演示代码,但用套接字替换了其中的一些代码,使用Laravel echo来传输对等连接数据。在"usage“演示中,它们生成一个"offer”对象,并让您将其粘贴到其他对等表单中。然后,该客户端生成一个"answer“对象,当您将其粘贴到发起客户端的表单中时,就建立了连接。如果我这样做,一切都会很好。但是我想在所有客户端都准备好的时候建立一个自动连接。下面是我的代码:

代码语言:javascript
复制
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,如下所示:

代码语言:javascript
复制
 Echo.channel('myChannel')
      .listen('MyEvent', (e) => {
        p.signal(e.connectionData)
      });

现在来看看这个错误:

代码语言:javascript
复制
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将初始"offer“对象发送给第二个对等体,然后获取其"answer”对象并发出信号,以便发起对等体在通过套接字接收数据时进行连接。但它给了我这个错误。有人能帮上忙吗?

EN

回答 1

Stack Overflow用户

发布于 2020-05-03 22:55:53

我最终弄明白了这一点。这是我的最终代码。它可能是混乱的,但它花了我大约6个小时到晚上,它让我的大脑疼痛XD。如果任何人能提供一些关于如何清理它的建议,我将很乐意接受,但这是按原样工作的。

在app.js中:

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

在我的刀片文件中使用Echo:

代码语言:javascript
复制
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]))
              }
            }
          });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61569934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档