开发者社区> 行者武松> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

WebRTC中的三角形和梯形

简介:
+关注继续查看




这是一种最常见的情景,两个浏览器同时从Web服务器中下载同一个WebRTC服务器中下载有WebRTC功能的Web程序。就像上面的图展示的那样。为什么会是三角形?因为这三个元素之间的信令路线和和媒体之间所构成的形状恰似一个三角形。两个浏览器之间的通讯并不通过Web服务器,而是通过建立对等连接来实现音视频媒体以及一些附加数据。

在WebRTC中我们常常把浏览器和服务器之间的连接成为信令,但是其实他并非指电话系统中的信令。信令在WebRTC中并没有实现标准化。

由于信令没有标准化,所以现在的信令被视为应用程序的一部分。HTTP和WebScoket都可以作为传输信令的通道。野狗实时视频通话技术在这部分使用的就是基于WebSocket的野狗实时数据同步来作为信令。

WebRTC中的梯形:

WebRTC梯形中采用的都是标准协议。例如:很多视频会议系统用到的会话发起协议(SIP)或者Jingle。当然,还可以采用专有的信令协议。

会话发起协议(Session Initiation Protocol,缩写SIP)是一个由IETF MMUSIC工作组开发的协议,作为标准被提议用于建立,修改和终止包括视频,语音,即时通信,在线游戏和虚拟现实等多种多媒体元素在内的交互式用户会话。

Jingle由Google及XMPP标准基金会设计。其多媒体流被设计用于RTP(实时传输协议)。若需要,可由NAT穿透辅助以使用ICE(交互式连接建立)。 FROM 维基百科

如果浏览器想和一个SIP客户端(例如SIP电话)进行视频通话,首先要做的少就是从Web服务器下载带有WebRTC代码的网页程序,在浏览器端向Web服务器发起音频通话请求对象M,Web服务器把M发给SIP服务器,SIP服务器把请求M发给SIP客户端(例如SIP电话)。SIP客户端在成功接收请求之后会相应另外一个请求对象S发给SIP服务器,SIP服务器把S发给Web服务器,Web服务器把S发给浏览器。在进行外上面的步骤后,浏览器和SIP服务器开始进行打洞,密钥协商,媒体会话等操作。会话关闭的时候流程和建立链接的时候类似。这里不再复述。

采用Jingle协议实现WebRTC的功能:

整个过程和SIP模式相比除了Web服务器A和Web服务器B之间采用的协议不同,其他的基本相似。这里不再详细说明。


作者:Wilddog

来源:51CTO

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Docker----Docker容器操作常用命令
Docker----Docker容器操作常用命令
22 0
RabbitMQ01_消息队列概述、使用场景、劣势、架构图与主要概念、Docker快速安装Rabbitmq、角色分类(二)
RabbitMQ01_消息队列概述、使用场景、劣势、架构图与主要概念、Docker快速安装Rabbitmq、角色分类(二)
64 0
BBR一键安装脚本 BBR/魔改/暴力/BBRplus/锐速(Lotsever)
BBR是 Google 提出的一种新型拥塞控制算法,可以使 Linux 服务器显著地提高吞吐量和减少 TCP 连接的延迟
36978 0
常用Docker容器操作命令
!!!!有镜像才能创建容器!!!!!,记下来,要考的!!!讲容器操作命令之前先下载一个centos的镜像(这个命令在上篇《常用Docker镜像操作命令》中有,不会的同学可以去看下) //首先查一下centos [root@iz2ze0lvzs71710m0jegmsz ~]# docker sea...
1243 0
WebSocket加入心跳包防止自动断开连接
近日,在公司中开发一个使用websocket为前端推送消息的功能时,发现一个问题:就是每隔一段时间如果不传送数据的话,与前段的连接就会自动断开; 刚开始以为是session的原因,因为web session 的默认时间是30分钟;但是通过日志发现断开时间间隔时间远远不到30分钟;认真分析发现不操作间隔恰好为90秒 它就会在自动断开;随恍然大悟;原来是我们的使用nginx 代理,nginx配置了访问超时时间为90s; WebSocket是html5中用来实现长连接的一个协议。
18991 0
Docker 安全:通过 Docker 提升权限
本文讲的是Docker 安全:通过 Docker 提升权限,【编者的话】本文的目的在于提醒大家注意 Docker 的安全性。本文中所有的内容总结成一句话:某个用户被加入了 docker 用户组,那么这个用户相当于直接获得了宿主机免认证的 root 权限。
3567 0
给websocket加入心跳包防止自动断开连接
var userId=$("#userId").val(); var lockReconnect = false; //避免ws重复连接 var ws = null; // 判断当前浏览器是否支持WebSocket var wsUrl = serverConfig.
1496 0
3.QT中的debug相关的函数,以及文件锁的使用
 1  新建项目T33Debug main.cpp #include <QDebug> #include <QFile> #include <QMutex>   //文件锁   void MyMessageHandler(QtMsgType typ
1278 0
+关注
行者武松
杀人者,打虎武松也。
17111
文章
2569
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载