这是我的第一个webRTC项目,所以我在跟踪这类错误方面非常缺乏经验。特别是因为我使用的是this NPM包,我不知道如何处理这个错误消息。如果您使用该链接,我只是复制/粘贴了"usage“演示代码,但用套接字替换了其中的一些代码,使用Laravel echo来传输对等连接数据。在"usage“演示中,它们生成一个"offer”对象,并让您将其粘贴到其他对等表单中。然后,该客户端生成一个"answer“对象,当您将其粘贴到发起客户端的表单中时,就建立了连接。如果我这样做,一切都会很好。但是我想在所有客户端都准备好的时候建立一个自动连接。下面是我的代码:
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将初始"offer“对象发送给第二个对等体,然后获取其"answer”对象并发出信号,以便发起对等体在通过套接字接收数据时进行连接。但它给了我这个错误。有人能帮上忙吗?
发布于 2020-05-03 22:55:53
我最终弄明白了这一点。这是我的最终代码。它可能是混乱的,但它花了我大约6个小时到晚上,它让我的大脑疼痛XD。如果任何人能提供一些关于如何清理它的建议,我将很乐意接受,但这是按原样工作的。
在app.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]))
}
}
});https://stackoverflow.com/questions/61569934
复制相似问题