javascript-WebRTC:同时重新协商问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-WebRTC:同时重新协商问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1678字,纯文字阅读大概需要3分钟。
内容图文
![javascript-WebRTC:同时重新协商问题](/upload/InfoBanner/zyjiaocheng/681/76193a4a6edb4059b57e6ea743bc7293.jpg)
用例:三个同伴正在与同一个房间中的另外两个同伴进行视频聊天,服务器发送一条消息,并且所有三个更改模式都变为音频,
目前,只有chrome支持重新协商,因此对于Firefox,我只是关闭连接并创建新的对等连接,但是在我检查双方都是chrome并更改了模式之后,
>如果我一次仅更改一个同伴的模式,则它可以正常运行.
>但是,当消息来自服务器时,两个对等方都尝试同时重新协商,但没有成功,我得到了类似错误的状态:STATE_SENTINITIATE
>为了解决该问题,我做了一个变通方法,每当必须重新协商对等连接时,它都会检查它是否是调用方
>如果是,它将继续进行重新谈判.
> else(如果它是应答者),它将更改提供的流并向呼叫者发出重新协商的信号.
>上述解决方法仅适用于很少的重新协商,但在某些情况下,它会在答答器侧设置本地描述时抛出错误,声称错误状态为STATE_INPROGRESS或STATE_SENTACCEPT.
我该如何解决这个问题?
解决方法:
由于重新协商的值为state-machine,因此双方同时发起重新协商可能会发生冲突,并且最终会导致无效状态错误.这称为眩光.
您的解决方法是处理眩光的一种方法,实质上是使用信令来确保始终从同一端(通常是提供方)开始重新协商.
您说即使采用这种解决方法,仍然偶尔会看到无效状态错误.由于重新协商是对等方之间的往返行程,因此在一段时间内,如果您还响应新的重新协商的信号请求,我想如果您尝试过早重新协商,您仍然会收到无效状态错误.
您可以检查pc.signalingState属性,以随时知道peerConnection处于什么状态.当您收到传入消息时,我会看看是否是问题所在.如果是这样,我将推迟进行重新协商,直到您的连接再次处于“稳定”状态.您可以使用pc.onsignalingstatechange对状态更改做出反应.
我听说过(但没有尝试过)解决眩光的另一种方法是让同龄人重新协商,当他们眩目时,让要约人总是赢.例如应答者将取消它在收到传入要约时所做的任何尝试(通过某种方式将其恢复为先前的稳定状态),而要约人将忽略自己尝试中的任何传入要约.
顺便说一下,Firefox现在也支持重新协商(38),因此您也可以在那里进行尝试,以查看是否遇到相同的问题.
内容总结
以上是互联网集市为您收集整理的javascript-WebRTC:同时重新协商问题全部内容,希望文章能够帮你解决javascript-WebRTC:同时重新协商问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。