Skip to content

WebRTC

WebRTC(Web Real-Time Communication)是一组浏览器 API,用于实时音视频和任意数据传输。媒体与数据优先在对等端之间直接传输;连接建立仍需要应用提供信令服务,网络受限时媒体可能经 TURN 中继。

核心对象

  • navigator.mediaDevices:申请摄像头、麦克风或屏幕共享。
  • MediaStream / MediaStreamTrack:表示媒体流及其中的音视频轨道。
  • RTCPeerConnection:协商、建立并维护与远端的音视频或数据连接。
  • RTCDataChannel:在对等连接上收发任意数据,适合聊天、文件分块和游戏状态。
  • MediaRecorder:把本地或远端 MediaStream 录制为媒体片段。

传输边界

WebRTC 不等于“无需服务器”:至少需要一个信令服务交换 SDP 与 ICE 候选;生产环境通常还需要 TURN 服务保证受限网络下的可用性。信令可用 WebSocket、HTTP 或其他双向消息机制实现,WebRTC 并不规定其协议。

媒体通常经 SRTP 加密,数据通道通常经 DTLS/SCTP 传输。浏览器采集媒体需要安全上下文(HTTPS 或 localhost)和用户授权。

最小结构

text
本地采集 → MediaStreamTrack → RTCPeerConnection ──媒体/数据──> RTCPeerConnection → 远端播放

                                      └──信令服务:SDP、ICE 候选、房间状态

适用场景

  • 一对一音视频通话、屏幕共享。
  • 多人会议(通常经 SFU 转发)。
  • 低延迟数据传输,例如实时协作、局域网设备控制、文件分块传输。

不适合把 WebRTC 当作通用后端消息队列:需要离线消息、强可靠持久化或大规模广播时,应由服务端协议和存储承担。

参阅

基于 MIT 许可发布