Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >WebRTC“完美谈判”问题

WebRTC“完美谈判”问题
EN

Stack Overflow用户
提问于 2020-05-22 05:58:25
回答 1查看 1.5K关注 0票数 1

我一直在尝试实现WebRTC“完美协商”,正如这篇博客文章中所解释的那样。不幸的是,我经常在谈话的礼貌方面触发错误(在下面的链接代码中,这是最后一次加入)。

两个最常见的错误是由InvalidStateError: Cannot rollback local description in stable引起的这条线ONN DOMException: "Cannot set local offer in state have-remote-offer"触发的这里和由这条线引起的。第二个错误对我来说是非常令人费解的,因为在检查我们应该处于stable状态之前的行,这是之后的第一个异步调用。

如果您想自己尝试,我的代码是托管在GitHub上。它可以直接部署在Heroku上:

代码语言:javascript
运行
AI代码解释
复制
heroku create
git push heroku master

或者可以通过更改server.js的第1、7-10和15行在本地测试自签名证书。

当我在76、73版的桌面火狐、80版的桌面浏览器以及Android上最新的移动版本上进行测试时,我遇到了这些问题。如果能在这方面提供任何帮助,我们将不胜感激。我也希望能在iPads (Safari >= 11)上可靠地工作,这是我无法亲自测试的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-23 16:29:32

TL;DR:浏览器在火狐77和规格中的固定和Chrome中的分离虫

ONN DOMException: "Cannot set local offer in state have-remote-offer" ...第二个错误对我来说是非常令人费解的,因为在检查我们是否应该处于稳定状态之前的行,这是之后的第一个异步调用。

WebRTC协商代码具有将同步信令消息转换为RTCPeerConnection对象上的异步操作的棘手任务。为了确保顺序,这些异步方法在内部是链子,所以一次只运行一个,因为状态机。

在信令压力下,这个内部链可能会被填满,这会使事情复杂化,因为您调用的方法会在稍后运行,而不是立即处于您刚刚同步观察到的状态。

发生“第二个错误”是因为浏览器错误地触发了negotiationneeded事件,而RTCPeerConnection对象的内部作业链是非空的。规范现在是固定,所以不会发生这种情况。

因为浏览器控制触发negotiationneeded事件的时间,所以它会处理它。

InvalidStateError: Cannot rollback local description in stable

不礼貌方面的“第一个错误”类似地是重载链的症状:同步状态检查,如果我们处于不稳定状态,然后是:

代码语言:javascript
运行
AI代码解释
复制
if (offerCollision) { // pc.signalingState != "stable"
  await Promise.all([
    pc.setLocalDescription({ type: "rollback" }),
    pc.setRemoteDescription(description),
  ]);
}

我怀疑在这个时候,还有其他谈判方法在运行setLocalDescription回滚之前将我们带回到“稳定”状态。

为了解决这个问题,规范添加了隐式回滚,因此您可以用以下方法替换上面的内容:

代码语言:javascript
运行
AI代码解释
复制
await pc.setRemoteDescription(description); // implicit rollback only if needed

这样做更好,因为是否需要回滚的决定是在链式方法中进行的,在那个时候(可能以后)查看正确的信令状态。

不幸的是,这不是那么容易填充。你可以尝试这样的方法:

代码语言:javascript
运行
AI代码解释
复制
if (offerCollision) { // pc.signalingState != "stable"
  await Promise.all([
    pc.setLocalDescription({type: "rollback"}).catch(() => {}), // ignore failure
    pc.setRemoteDescription(description),
  ]);
}

或者等待浏览器实现隐式回滚。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61956693

复制
相关文章
django 富文本编辑的种类
django 富文本编辑的种类 ckeditor(推荐) tinymce ueditor ... ckeditor 官网:https://ckeditor.com/ 安装:https://xieboke.net/article/7/ 文档:https://django-ckeditor.readthedocs.io/en/latest/ tinymce 官网:https://www.tiny.cloud/docs/api/tinymce/root_tinymce/ 安装:https://www.cnblog
卓越笔记
2023/02/18
4030
Django使用markdown文本编辑器
前端界面的显示: 导入css,js文件,这些文件的路径在\python\Lib\site-packages\mdeditor\static中,将它拷贝至项目的静态文件目录使用即可(注意导入顺序):
TomatoCool
2023/07/30
3430
Django添加ckeditor富文本编辑器
源码 https://github.com/django-ckeditor/django-ckeditor
菲宇
2022/12/21
2.2K0
jQuery实现单击页面产生随机字符效果
jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。
浩Coding
2019/07/02
2.7K0
jQuery实现单击页面产生随机字符效果
Django 2.1.7 使用富文本编辑器 tinymce
Django 2.1.7 Admin - 注册模型、自定义显示列表字段 Django 2.1.7 上传图片 - Admin后台管理 https://django-tinymce.readthedocs.io/en/latest/
Devops海洋的渔夫
2019/07/15
1.7K0
Django 2.1.7 使用富文本编辑器 tinymce
django admin 使用 ckeditor 富文本编辑器
pip install pillow (上传图片到伺服器裁剪用,生成浏览伺服器的缩略图)
卓越笔记
2023/02/17
1.2K0
django admin 使用 ckeditor 富文本编辑器
有没有可能,你根本不懂文本编辑!(一期)
用户5021203
2022/10/05
1950
有没有可能,你根本不懂文本编辑!(一期)
django xadmin 集成DjangoUeditor富文本编辑器
本文档记录自己的学习历程! 介绍 Ueditor HTML编辑器是百度开源的在线HTML编辑器,功能非常强大 额外功能 解决图片视频等无法上传显示问题 Ueditor下载地址 https://github.com/wsqy/DjangoUeditor.git 解压后将 DjangoUeditor 文件夹复制到django项目目录下,跟app目录同级 修改app models 导入UEditorField 模块 增加需要富文本框的字段 from DjangoUeditor.models import UEd
程序员同行者
2018/07/02
1.4K0
使用 Django Ueditor 富文本编辑器(一)
很简单的,直接把自己想要使用富文本编辑器的字段应用为UeditorField就可以了:
benny
2020/04/23
1.3K0
Django 基于 jquery 的 a
<1> $.ajax的两种写法: $.ajax("url",{}) $.ajax({}) <2> $.ajax的基本使用 $.ajax({ url:"//", data:{a:1,b:2}, type:"GET", success:function(){} }) $.get() 方法 创建一个 static 文件夹,用来存储 jquery.min.js 配置 settings.py, 在最后添加 STATICFILES_DIRS=( os.pa
py3study
2020/01/15
4400
Django 基于 jquery 的 a
Django使用xadmin集成富文本编辑器Ueditor
使用xadmin发现没有富文本编辑器,就在网上找关于xadmin集成富文本编辑器的文章,看很多人都在使用ueditor集成,也试了好几篇文章的,都有些问题,遇到很多坑,就自己摸索尝试,最后终于配置成功。 一、xadmin的安装与配置 1、安装xadmin,其中第一种在python3中安装不成功,推荐第二种或者第三种 方式一:pip install xadmin 方式二:pip install git+git://github.com/sshwsfc/xadmin.git 方式三: 下载https://cod
菲宇
2022/12/21
6050
Django使用xadmin集成富文本编辑器Ueditor
Django项目如何用富文本编辑器DjangoUeditor
Ueditor HTML编辑器是百度开源的在线HTML编辑器,功能非常强大,像表格可以直接拖动调整单元格大小等, DjangoUeditor是把此编辑器集成为可以在django项目中直接使用的app,让django项目可以方便的使用这个编辑器。
极简小课
2022/06/21
2.3K0
Django项目如何用富文本编辑器DjangoUeditor
Django实战-番外篇-tinymce富文本编辑器
富文本编辑器在 web应用中使用广泛,比如 markdown、ueditor 等,像这些编辑器都有集成在 python 和 django 的第三方包。
小团子
2019/07/18
9300
Django实战-番外篇-tinymce富文本编辑器
Django中富文本编辑器KindEditor的使用和图片上传
KindEditor 是一套开源的在线HTML编辑器,主要用于让用户在网站上获得所见即所得编辑效果,开发人员可以用 KindEditor 把传统的多行文本输入框(textarea)替换为可视化的富文本输入框。 KindEditor 使用 JavaScript 编写,可以无缝地与 Java、.NET、PHP、ASP 等程序集成,比较适合在 CMS、商城、论坛、博客、Wiki、电子邮件等互联网应用上使用
菲宇
2022/12/21
1.1K0
Django中富文本编辑器KindEditor的使用和图片上传
flashfxp编辑文件显示活动编辑的取消办法
我一直在使用的是国产的8UFTP,但是最近win10系统貌似有点不和谐,编辑文件上传的时候会有一秒“未响应”的卡顿情况,所以有些别扭,又不想做回win7,所以就想起了比较强大的flashfxp。
李洋博客
2021/06/16
1.6K0
017:Django商品详情页、富文本编辑器
本章知识点 1、详情页调用 2、富文本编辑器 知识点讲解 1、详情页调用 2、富文本编辑器 Ckeditor Php Java Python Django-ckeditor App 安装django-ckeditor 到虚拟环境 pip install django-ckeditor 安装django-ckeditor到项目 安装app
李玺
2021/11/22
5150
017:Django商品详情页、富文本编辑器
Django实战-信息资讯-UEditor富文本编辑器
Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。
小团子
2019/07/18
7320
Django实战-信息资讯-UEditor富文本编辑器
Django后台和前台使用summernote富文本编辑器
简单介绍一下怎么在django的管理后台和用户使用网页中使用django-summernote富文本编辑器,其他富文本编辑器类似。
小末快跑
2019/07/03
2.5K0
点击加载更多

相似问题

eclipse外观问题

21

Java Substance外观问题

30

Icefaces 1.8外观问题

15

TableView细胞外观问题

35

UITabBar外观问题+ NSThreads

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档