本文主要分析webrtc音视频点对点部分的代码结构,文章来自博客园RTC.Blacker,转载请说明出处.

前段时间在查一个偶尔断线的问题(这种问题最蛋疼,不好重现,只能凭经验去搞),所以理了下webrtc的P2P代码结构,总结如下:

先来张图显示实际会话过程中的两种通讯路径:P2P或转发,92%的情况下是通过P2P实现.

注意:实际通讯过程中每个客户端都会不停地发送和接收Stun包,这样做是为了维护响应的连接和端口.

实际通讯过程中的核心组件为P2PTransportChannel,他代表着本地和远程计算机的连接通道,

管理着许多本地和远程计算机上许多不同的连接类型的连接对象,如TCP,udp,

连接对象上包含了本地端口和远程地址信息,当一个连接失败时他会无缝地切换到另一个连接上,下图是P2P数据通道的内部结构图

下面是代码结构中堆栈调用过程:

1,接收和发送数据的AsyncUDPSocket创建过程如下:

2,呼叫方根据remotecandidate创建连接并执行Ping过程如下:

3、接收方根据remotecandidate创建连接并执行Ping过程如下:

4、收到Stun响应更改连接状态调用过程如下:

5、连接成功建立开始数据收发调用过程如下:

最新文章

  1. 关于C++默认初始化的总结——开个坑
  2. Javascript中apply、call、bind
  3. paip.提升用户体验--提升java的热部署热更新能力
  4. 在Eclipse新建菜单中添加JSP
  5. Myeclipse提示失效?
  6. Mysql创建和删除用户
  7. android 休眠唤醒机制分析(一) — wake_lock
  8. Qt国际化相关类(以前没见过codec->toUnicode,QTextCodec,QLocale.toString和QLocale::setDefault,QInputMethod::locale())
  9. exec 重定向
  10. 条形码(JBarcode)
  11. Xcode9新特性介绍-中文篇
  12. VINS 估计器之检查视差
  13. Storm入门(十四)Trident API Overview
  14. ubuntu Anaconda install
  15. thymeleaf 页面获取当前页面的完整URL地址
  16. JavaScript数组方法--filter、find、findIndex
  17. Node.js学习看这里:基础、进阶、文章
  18. 【hyperscan】hyperscan开源了!
  19. SQLServer 事物与索引
  20. OAuth2.0网页授权 提示未关注该测试号

热门文章

  1. 济南学习 Day 2 T3 pm
  2. showModalDialog 超过问题
  3. android Spinner的使用
  4. iBox v2.0 发布,Web化仿iOS7界面/交互的JavaScirpt库
  5. C#读取USB的一些相关信息
  6. thinkphp学习笔记3—项目编译和调试模式
  7. 201521123052《Java程序设计》第1周学习总结
  8. C语言——第十四、十五周作业
  9. UDP协议实现客户服务器数据交互
  10. Perl多线程(1):解释器线程的特性
  11. vertx的Future设计
  12. centos7 关闭selinux
  13. 自动化测试 | UI Automator 入门指南
  14. 火币网API文档——WebSocket API错误码
  15. 基于 Python 和 Pandas 的数据分析(4) --- 建立数据集
  16. python day03--字符串
  17. RYU 灭龙战 first day
  18. 【AtCoder】AGC030
  19. java 中静态变量(类变量)与实例变量 静态方法与实例方法
  20. poj 3164