WebRTC 接收端连接流程

在当前的流程图中,发送端的流程被弱化处理,主要聚焦于接收端的流程。
关于类设计方面,目前有两个主要类:
SignalingHandler:负责信令相关功能,例如与信令服务器交互、处理远端 SDP 和 ICE Candidate。专注于 信令层(消息传递、事件通知)。
PeerConnectionHandler:负责 WebRTC 连接管理,例如创建 PeerConnection、添加轨道、监听远端媒体流。专注于 WebRTC 层(连接管理、媒体处理)
初始化阶段
- 连接信令服务器:建立与信令服务器的通信通道,用于交换 SDP 与 ICE Candidate。
- 创建
PeerConnection实例:初始化 WebRTC 核心连接对象,配置 ICE 服务器等参数。
接收远端 Offer
- 等待远端 Offer SDP(信令服务器通知):接收房间中已有用户发来的 Offer。
- 设置远端描述:调用
peerConnection.setRemoteDescription(offer)将远端 SDP 应用到本地。
创建本地 Answer
- 生成 Answer SDP:调用
peerConnection.createAnswer()生成本地 Answer。 - 设置本地描述:调用
peerConnection.setLocalDescription(answer)。 - 通过信令服务器发送 Answer SDP 到远端。
ICE Candidate 处理
- 等待远端 ICE Candidate(信令服务器通知)。
- 添加远端 ICE Candidate:调用
peerConnection.addIceCandidate(candidate)。 - 监听本地 ICE Candidate 生成事件:通过
PeerConnection.Observer.onIceCandidate回调捕获本地候选。 - 通过信令服务器发送本地 ICE Candidate 到远端。
远端媒体轨道处理
- 监听远端轨道:通过
PeerConnection.Observer.onTrack回调获取远端 MediaStream。 - 绑定播放控件:将远端轨道添加到
SurfaceViewRenderer播放。