一、WebRTC 概述:从零开始认识这项技术
1.1 什么是 WebRTC?
WebRTC,全称 Web Real-Time Communication。说白了,就是让浏览器之间能直接通话、传视频、发文件,不需要装任何插件。
我刚开始接触这个技术时,也觉得挺神奇的。你想想看,两个浏览器之间,没有服务器中转,就能实现低延迟的音视频通话。这在十年前几乎是不可想象的。
WebRTC 的核心能力就三件事:
- 音视频采集与播放 —— 打开摄像头、麦克风,播放远端传来的流
- 点对点传输 —— 两个浏览器直接建立连接,数据不经过服务器
- 网络穿透 —— 即使双方都在 NAT 后面,也能找到对方
嗯,这里要注意:WebRTC 不是单一协议,而是一整套技术栈的集合。它包含了音视频编解码、网络传输、安全加密等多个层面。
一句话总结:WebRTC = 浏览器原生支持的实时通信能力,零插件,低延迟,点对点。
1.2 WebRTC 的发展历史
WebRTC 的故事要从 2010 年说起。当时 Google 收购了 GIPS 公司,这家公司做的是 VoIP 引擎。Google 拿到手后,决定把它开源,并集成到 Chrome 浏览器里。
我记得 2011 年 Google 首次公布了 WebRTC 项目,那时候业界反应其实挺平淡的。很多人觉得「浏览器里做实时通信?延迟肯定高得没法用」。
但事情在 2013 年发生了变化。这一年,Chrome 和 Firefox 实现了互通的 WebRTC 通话。我亲自试过,效果出奇的好。从那以后,WebRTC 就进入了快车道。
几个关键时间节点:
| 年份 | 事件 |
|---|---|
| 2010 | Google 收购 GIPS,获得实时通信核心技术 |
| 2011 | Google 开源 WebRTC 项目 |
| 2013 | Chrome 与 Firefox 首次实现 WebRTC 互通 |
| 2017 | W3C 发布 WebRTC 候选推荐标准 |
| 2021 | WebRTC 成为 W3C 正式推荐标准 |
我曾经参与过一个项目,需要在 2015 年左右的 Android 浏览器上跑 WebRTC。那时候兼容性问题特别多,不同浏览器对 SDP 的解析方式都不一样。现在好多了,主流浏览器基本都支持了。
1.3 WebRTC 的核心应用场景
WebRTC 能做什么?我列几个最常见的场景:
- 视频会议 —— Zoom、Google Meet、腾讯会议的后台技术,底层都用了 WebRTC
- 远程医疗 —— 医生和患者实时视频问诊,低延迟很关键
- 在线教育 —— 一对一或小班课,师生互动需要实时音视频
- 直播连麦 —— 主播和观众连麦互动,WebRTC 负责低延迟传输
- 屏幕共享 —— 远程协作时共享桌面或某个应用窗口
- 文件传输 —— 利用 DataChannel 实现点对点文件传输,速度很快
我个人觉得,WebRTC 最大的价值在于「零门槛」。用户打开浏览器就能用,不需要下载任何客户端。这对很多 ToC 场景来说,体验提升是巨大的。
避坑指南:我曾经在一个项目中,直接用 WebRTC 做万人直播。结果发现点对点模式根本撑不住。后来才明白,WebRTC 适合小规模互动,大规模分发需要搭配 SFU/MCU 服务器。
1.4 WebRTC 的技术架构概览
WebRTC 的技术架构,我习惯把它分成三层:
- 应用层 —— 开发者直接调用的 API,包括 getUserMedia、RTCPeerConnection、RTCDataChannel
- 会话层 —— 负责连接建立、媒体协商,核心是 SDP 和 ICE 协议
- 传输层 —— 负责数据收发,包括 SRTP/SCTP、DTLS、ICE 穿透
下面这张图是我自己画的,能帮你快速理解整体架构:
为什么需要这么多层?因为实时通信真的很复杂。你想想看,两个浏览器要建立连接,中间可能隔着好几层 NAT、防火墙,还要考虑加密、编解码、网络抖动……每一层解决一个问题。
我刚开始学 WebRTC 时,最头疼的就是 ICE 流程。STUN 和 TURN 的区别、候选者优先级、连接检查的顺序……这些概念很容易搞混。但等你真正理解了,就会发现这套设计其实非常优雅。
核心要点:WebRTC 的技术架构是分层设计的。上层 API 简单易用,下层协议复杂但强大。作为开发者,你不需要理解所有底层细节,但了解整体架构能帮你更好地排查问题。
1.5 为什么 WebRTC 值得学?
说实话,实时通信的门槛一直很高。以前要做音视频通话,要么用 Flash(已经淘汰了),要么自己搭一套基于 UDP 的传输协议。这两种方式都不太理想。
WebRTC 的出现,把实时通信的门槛降到了「写几行 JavaScript」的程度。而且它是浏览器原生支持的,不需要用户安装任何东西。
我个人觉得,未来五年实时通信会像今天的 HTTP 一样普及。视频客服、远程协作、在线教育、社交娱乐……这些场景都会用到 WebRTC。早点掌握这门技术,对你来说只有好处。
学习建议:不要一开始就钻到 ICE 和 STUN 的细节里。先跑通一个最简单的 demo,让两个浏览器能互相看到对方。有了感性认识之后,再深入学网络穿透和媒体协商。