mid*_*ido 3 javascript google-chrome webrtc
Use Case:三个同伴正在与同一个房间中的另外两个同伴进行视频聊天,服务器发送一条消息并将所有三个更改模式都转换为音频,
目前,只有chrome支持重新协商,因此对于Firefox,我只是关闭连接并创建新的对等连接,但是在我检查双方都是chrome并更改了模式之后,
我该如何解决这个问题?
由于重新协商是一种状态机,因此双方同时发起重新协商可能会发生冲突,并且最终会导致无效状态错误。这称为眩光。
解决方法是处理眩光的一种方法,实际上是使用信号发送来确保始终从同一端(通常是提供方)开始重新协商。
您说即使采用这种解决方法,仍然偶尔会看到无效状态错误。由于重新协商是对等方之间的往返行程,因此在一段时间内,如果您还响应新的重新协商的信号请求,我想如果您尝试过早重新协商,您仍然会收到无效状态错误。
您可以随时检查pc.signalingState属性以了解peerConnection处于什么状态。当您收到传入消息时,我会看看是否是问题所在。如果是这样,我将推迟进行重新协商,直到您的连接再次处于“稳定”状态。您可以pc.onsignalingstatechange用来对状态更改做出反应。
我听说过(但没有尝试过)解决眩光的另一种方法是让同龄人重新协商,当他们眩目时,让要约人总是赢。例如,应答者将取消其在收到传入要约时所做的任何尝试(通过某种方式使其自身恢复到其先前的稳定状态),而要约人则将在其自身尝试期间忽略任何传入要约。
顺便说一句,Firefox现在也支持重新协商(38+),因此您也可以在那里进行尝试,以查看是否遇到相同的问题。
| 归档时间: |
|
| 查看次数: |
943 次 |
| 最近记录: |