Failed to set remote answer sdp: Failed to push down transport 描述:未能为通道设置 SSL 角色

Failed to set remote answer sdp: Failed to push down transport description: Failed to set SSL role for the channel

我正在使用 webRTC 构建一个支持音频通话的系统。它是这样工作的:
- 用户 A createOffer,然后 setLocalDescriptionoffer
- 用户 B receiveOffer,然后 setRemoteDescriptionoffer
- 用户 B createAnswer,然后 setLocalDescriptionanswer
- 用户 A receiveAnswer,然后 setRemoteDescriptionanswer

问题是,A收到B的回答后,当A做setRemoteDescription(answer)的时候,出现了这个错误:

未捕获(承诺)DOMException:无法设置远程应答 sdp:无法下推传输描述:无法为通道设置 SSL 角色。

我不知道为什么会出现这个错误。我试着用谷歌搜索它,但到目前为止还没有运气。任何帮助将不胜感激!

好像是a Firefox bug
总之,发生的事情是:
- Firefox 提供 actpass
- Chrome 个答案 active。这将 Chrome 设置为 DTLS 客户端,并将 Firefox 设置为 DTLS 服务器。
- Chrome 重新报价,active(因为规范是这么说的,或者至少我们长期以来是这样解释的)
- Firefox 提供 active,但具有相同的 DTLS 指纹。 Chrome 不喜欢这个;它被解释为试图在不创建新关联的情况下将 DTLS 角色从 server 更改为 client
为了解决这个问题,我所做的是: 确保 offer/answer 方向保持一致。这意味着,如果 Firefox 生成初始报价,它也会生成所有后续报价。我不确定这种做法有多普遍,但它可能会避免很多互操作错误。
更详细的讨论:https://groups.google.com/forum/#!topic/discuss-webrtc/gsw3OEAwNKo

我在重新协商时遇到了这个问题。我通过确保服务器应将 sdp 设置回答为 passive 来解决此问题。 chrome <-> firefox 通常会出现此错误。

您也可以在这里查看:https://bugs.chromium.org/p/webrtc/issues/detail?id=2782