javascript - Webrtc setRemoteDescription 对调用者不起作用

标签 javascript webrtc

部分代码如下所示:

if (message.type === 'offer') {
    console.log("got offer");
    console.log(message);
    pc.setRemoteDescription(new SessionDescription(message));
    console.log(pc);
    createAnswer();
}
else if (message.type === 'answer') {
    console.log("got answer");
    console.log(message);
    pc.setRemoteDescription(new SessionDescription(message));
    console.log(pc);
}

Calee成功设置远程描述,pc.remoteDescription充满。但是调用者...收到与被调用者相同的消息,但在pc.setRemoteDescription(new SessionDescription(message));之后得到pc.remoteDescription空虚并注意到发生。被调用者已准备好接收流,但调用者被卡住。

最佳答案

我认为问题是因为 setRemoteDescription 失败,或者与 createAnswer 之间存在竞争条件,因此将其添加到成功回调中,为了清楚起见,添加错误回调也...

类似于:

if (message.type === 'offer') {
    console.log("got offer");
    console.log(message);
    pc.setRemoteDescription(new SessionDescription(message), function(){
        console.log(pc);
        createAnswer();
    }, console.error.bind(console));
}
else if (message.type === 'answer') {
    console.log("got answer");
    console.log(message);
    pc.setRemoteDescription(new SessionDescription(message), console.log.bind(console, 'success'), console.error.bind(console));
}

如果支持 Promise 和 ES6:

if (message.type === 'offer') {
    console.log("got offer");
    console.log(message);
    pc.setRemoteDescription(new SessionDescription(message))
      .then(() =>{
        console.log('success...', pc);
        createAnswer();            
      }).catch(e => console.error(e));
}
else if (message.type === 'answer') {
    console.log("got answer");
    console.log(message);
    pc.setRemoteDescription(new SessionDescription(message))
      .then(() => console.log('success...', pc))
      .catch(e => console.error(e));
}

关于javascript - Webrtc setRemoteDescription 对调用者不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33681797/

相关文章:

javascript - jquery 在单选按钮和页面加载时更改 css

javascript - Express js session--只为登录用户创建

javascript - WebRTC音频仅在语音上激活

javascript - WEBRTC 可以使用共同浏览功能吗?

javascript - YouTube图像叠加层-Javascript不执行两个元素

javascript - 使用 Javascript 加载脚本 - 在 Chrome 上不起作用?

javascript - 使用 RecordRTC 进行 WebRTC 视频录制在 IE 和 Safari 中显示错误

javascript - id为 X 的 QBWebRTC 目前正忙? QB.webrtc.onRemoteStreamListener 未触发。 Quickblox Javascript SDK + Angular + WebRTC

javascript - 如何使用 webRTC、node.js 和 socket.io 构建多用户视频聊天网络应用程序

javascript - 强制组件从 Mithril.js 中的不同组件重绘