Search K
Appearance
Appearance
WebRTC 是一种基于浏览器的实时通信技术,用于在网页中实现点对点(Peer-to-Peer,P2P)通信。它是一种协议,使浏览器之间可以直接进行音视频通话、文件传输等实时数据交换。

WebRTC 架构主要分为三部分:
P2P 通信在不同网络环境的两个设备间进行,要求设备具有麦克风、摄像头等必要硬件。下面详细介绍其遇到的几个关键问题及解决方案:
需要一个中介服务器来帮助设备发现对方并交换元数据(如媒体信息、网络信息)。这一交换过程称为信令传输(Signaling),负责传输信令的服务器称为信令服务器。
参与通信的设备可能支持不同的编码格式,例如,设备 A 支持 H264 和 VP8,设备 B 支持 H264 和 VP9。WebRTC 使用会话描述协议(Session Description Protocol,SDP)来解决此问题。设备在连接前交换 SDP 信息,了解对方支持的媒体格式,这一过程称为媒体协商。
WebRTC 中的音视频数据传输依赖于网络协商。通信双方需要了解彼此的网络情况,通常会使用网络地址转换(NAT)或代理服务器将设备的局域网 IP 转为公网 IP,从而找到一条可用的通信链路。这一过程依赖中间层来建立连接(如下图),在 webrtc 中我们使用ICE 机制建立网络连接。
在 webrtc 中有三种类型的 ICE 候选者,按照优先级分别是:

NAT(Network Address Translation,网络地址转换)用于将局域网中的 IP 地址转换为公网 IP 地址。
ICE(Interactive Connectivity Establishment, 交互式连接建立)是一个框架,负责协调和选择最佳连接路径,以实现 NAT 穿越。 它优先通过 STUN(Session Traversal Utilities for NAT)获取设备的公网地址(就是找ip和端口的),从而建立直接的 P2P 连接。 当 STUN 无法穿越 NAT 时,TURN(Traversal Using Relays around NAT)作为备选方案,提供中继服务来保证通信的稳定性。 tips: ICE 会优先使用 STUN,仅在 STUN 失败时才会使用 TURN。
tips:stun/turn服务器我们经常使用coturn开源项目来搭建的,地址是:https://github.com/coturn/coturn.