在我的应用程序中,我大量使用重新协商来添加和删除本地流。不幸的是,当交换提议和答案时,重新谈判的使用可能会大大增加竞争条件的数量。
让我们考虑以下情况:
create a local offer without any local stream -- success setLocalDescription(offer) -- success user grant access to the video which causes renegotiation -- success create a local offer with local stream -- success setLocalDescription(offer) -- failed
抛出的错误是:
Failed to set local offer sdp: Failed to push down transport description: Failed to set local identity.
如果statusSignal是“have-local-offer”,我无法调用setLocalDescription?
处理这种情况的正确方法是什么?
我在考虑延迟第二次报价(包含新的本地流),直到第一次接听/报价握手完成。这不是最佳解决方案,但应该可行。你怎么看 ?
答案 0 :(得分:1)
我知道from another question直接附加协商事件处理程序并不方便,因为这会触发它两次(我不知道这是否属于你的情况)。我尝试的是在之后附加处理程序我已成功发送和接收SDP数据。然后我通过添加和删除流引起了谈判,这是完美的。另外,请确保在收到SDP对象时创建new RTCSessionDescription(<receivedObject>)
,然后将其附加到pc.remoteDescription
。