4-2.一对一实时通信架构

那今天呢?我们来介绍一下一对一实时通讯的架构。那在前面的章节中呢,我已经向你介绍过我们在学习webrtc的时候呢,一定要牢牢抓住peerconnectionclient的这个demo程序。以它为突破口,这样呢,才能更有利于我们学习webrtc源码。那之所以要抓住这个demo程序,是因为webrtc的所有重要的操作步骤都聚集在这个demo中了。而且在这个单目中呢,我们还可以通过单步调试的方法,一步一步进入到webrtc底层的代码中去。

看看它底层代码是如何实现这个逻辑的,因此对于我们这一章来说,主要的内容就是介绍。其实connection它是如何工作的?里边的架构是什么样的?这样才能一步一步让你从中学到我们该如何分析webrtc源码。好,下面我们就来看一看,对于peer connection这个demo来说,它是如何工作的?那首先我们要从全局上看一下它的架构是什么样子的,对吧?那这张图呢,就是peerconnectionclient它的一个整体的一个架构图。那在这里边儿啊,

包括了三个重要的组件,我们一一来看一下,那第一个重要组件呢就是signal server,也就是信令服务器。在一对一进行通讯的时候,首先他们要进行一些必要信息的交换,比如说sdb信息。进行媒体协商对吧?那这个交换是怎么交换的呢?就是通过signal server。通过一个心理服务器,从一端传到另一端,所以必须有一个,第二个呢是斯坦福跟特尔服务。这个服务器主要用于数据的中转,

如果我们的两个客户端是在一个局域网内,对于webrtc来说,它可以是。识别出你是在同一个局域,网内就会直连,如果是在外网,那这个时候呢,我们就会使用到斯坦跟特尔夫。所以对于我们这一章的例子来说呢,这个STUN跟TURN服务啊,不是必须的,所以这一块儿呢,我们可以暂时忽略掉第三部分呢,就是peerconnectionclient。

在一对一的通讯过程中,需要两个client,对吧?那左边这是发起端,右边这个呢?是应答端。所以我们通过这个图啊,也可以看出左右这两个client端它的结构呢,其实是一模一样的,所以呢,我们只需要介绍一端的内容就OK了。好,那下面我们就来详细看一下client端,它包括了哪些内容?第一部分是设备的检测,

那如果我们是一个商业的client,对于这个检测模块是必须的,对吧?首先要让用户检测一下。它的音频设备跟视频设备是否都能正常工作之后呢?我们再进行这个实时通讯。而对于我们peerconnectionclient来说,因为它是一个demo程序,所以这块儿呢,并没有实现,这是我们要知道的。那第二部分呢?是音视频采集这块儿呢?是必须要有的好,第三部分录制,

如果我们是一个商业的用户,同时也要支持客户端录制。那对于peerconnectionclientlient来说呢,这个录制也是不存在的,所以对于这一列来说呢,它只包含一个音视频的采集。好,下一个模块呢?是signal模块signal模块的作用呢?就是与signal server进行通讯。也就是信令可以与服务端进行互通,对吧?这样我们最终呢,才能将sdp信息通过信令服务器转到另一端。好,

第五个是创建连接,也就是创建peer connection。对于peer connection的具体内容呢,我后边再做详细的介绍,那现在呢?我们只要知道这里所谓的创建连接并不简简单单,只创建一个socket连接。它实际上指的是创建一个peer connection对象,而对于peer connection对象来说呢,它里边包括了很多的功能。其中一个重要功能呢,就是生成offer类型的sdp,最终呢,通过signal将offer的sdp通过signal server。传输给对端,

这是第一个重要的功能,那第二个重要的功能呢?是创建socket连接最终的数据。是通过socket连接传输出去的,而不是通过信令。这里大家一定要清楚啊signal这里使用的连接一般都是TCP连接,为了保证。它数据的可靠性,而我们音视频数据传输呢,是通过udp类型的socket进行传输的。所以这个signal与这里建的这个连接啊,是两个连接这个,大家一定要清楚,那第六步呢?就是如果我们的另外一个客户端是在一个外网,

那这个时候我们还要连接一下STUN服务。对吧,通过STUN服务呢,获取到我本机的外网IP地址,那将我的外网IP呢,通过新令服务器交给对端,对端就可以通过NAT穿越。与我进行直连了,对吧?也就是这条线。那如果没有这一步的话,两个外网的客户端是无法通过p2p直连的,对吧?好当拿到外网IP之后呢?还是经过这个信令服务器,

把这个地址呢交给对端,最终通过n的穿越进行直连尝试。如果可以互通,那数据呢?就可以源源不断的从一端传到另一端,对吧?如果不可以互通,这时候呢,它可以走特定服务进行服务器的中转。这就是这个peerconnectionclient进行一对一实时通讯的整体的过程。当然,对于未呼叫端呢,实际整个的过程与呼叫端是类似的。那唯一的区别是什么呢?是被叫方的peer connection,

它要创建的sdp类型为answer类型,而不是offer类型。对吧,这是它们一个最主要的区别。对于呼叫端来说呢,它先要创建offer,告诉对端,那对端呢,要创建answer进行应答。再传递给发送端,这样双方就可以进行媒体协商了,那最终呢,就可以实现数据的互通。那以上呢,就是peerconnectionclient的这种一对一的实时通讯的架构。

那在这里啊,我们还有几点啊?需要注意一下,那第一点呢?我们需要注意的是,对于我们这章来说,重点介绍的就是peerconnectionclient。也就是刚才我们讲的这个大的方块里的这些内容,第二点呢,对于信令服务器来说,它使用的是peer connection server。这个server呢?其实它的实现非常的简单,只是进行一个信令的中转,没有其他过于复杂的内容好,

第三个就是STUN跟TURN服务。对于这部分知识呢,我们这章涉猎的不多,在后面的章节中呢,我再详细给大家介绍STUN跟TURN服务。所以现在我们就应该知道,对于我们这一章的学习,主要是对于peerconnectionclient它里边儿做了哪些事情,我们要做一个深度的剖析。这样使你对它有一个全面的认知,之后呢,我们就可以进入webrtc更深层次的知识来学习它源码是怎么实现的。好,那我们今天的课呢?就到这里,

谢谢。

如有侵权,请联系我删除

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值