[笔记]WebRTC 学习 FAQ

Q: WebRTC 是什么, 能做什么, 社区评价?

https://www.zhihu.com/question/22301898

1
WebRTC 全称 Web Real-Time Communication。它并不是单一的协议, 包含了媒体、加密、传输层等在内的多个协议标准以及一套基于 JavaScript 的 API。通过简单易用的 JavaScript API ,在不安装任何插件的情况下,让浏览器拥有了 P2P音视频和数据分享的能力。

Q: WebRTC 技术栈

Q: 如何搭建一个 WebRTC sample?

https://webrtc.github.io/samples/

Q: WebRTC有哪些实现?

https://github.com/rainzhaojy/blogs/issues/3

  1. Browser Support
  2. WebRTC native code (https://webrtc.org/native-code/)

Q: WebRTC 如何进行网络请求?

通过 P2P 协议

https://bloggeek.me/4-p2p-webrtc-facts/

  1. WebRTC 在 p2p 上和 voIp 一样
    这意味着从一端到另外一端是 “best effort” 的机制
  2. WebRTC 是唯一的浏览器 p2p 方案
  3. P2P 还是需要 STUN and TURN
  4. WebRTC 还是需要外部信号协议

Q: STUN 和 TURN 是什么?

https://github.com/rainzhaojy/blogs/issues/4

  • 这篇文章还说了如何使用 TCP 服务绕过可能存在的 Firewalls 限制

https://zhuanlan.zhihu.com/p/26797422

用来穿透 NAT 的服务, 可以让非局域网环境的两个 peer 进行 p2p.

TURN 可以穿透对称 NAT (Symmetric NAT)

Q: 对称 NAT 是个啥

1
NAPT分为锥型(Cone)和对称型(Symmetric),它们的区别在于,在NAT已分配端口号给Client A的情况下,如果Client A继续用1235端口与另一外网服务器通讯,锥型NAT还会继续用原来62000端口,即所分配的端口号不变

Q: 怎么在 Chrome 上调试?

https://stackoverflow.com/questions/17530197/how-to-do-network-tracking-or-debugging-webrtc-peer-to-peer-connection

chrome://webrtc-internals/

启动 Chrome 时增加参数 –enable-logging –v=4 会对 STUN 记录日志, 生成在用户目录的 chrome_debug.log 中