主题
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 当作通用后端消息队列:需要离线消息、强可靠持久化或大规模广播时,应由服务端协议和存储承担。
