上QQ阅读APP看书,第一时间看更新
2.4 连接建立的流程
介绍完ICE框架中各个部分的含义之后,让我们来看一看WebRTC连接建立的流程,大致步骤如下所示。
1)连接双方(Peer)通过第三方服务器来交换(signaling)各自的SDP数据。
2)连接双方通过STUN协议从STUN服务器那里获取到自己的NAT结构、子网IP和公网IP、端口,即Candidate信息。
3)连接双方通过第三方服务器来交换各自的Candidate,如果连接双方在同一个NAT下,那它们仅通过内网Candidate就能建立起连接;如果它们处于不同NAT下,就需要通过STUN服务器识别出的公网Candidate进行通信。
4)如果仅通过STUN服务器发现的公网Candidate仍然无法建立连接,这就需要寻求TURN服务器提供的转发服务,然后将转发形式的Candidate共享给对方。
5)连接双方向目标IP端口发送报文,通过SDP数据中涉及的密钥以及期望传输的内容建立起加密长连接。
下面用一个例子描述连接双方的具体步骤。A(local)和B(remote)代表两个人,初始化并分别创建PeerConnection,并向PeerConnection添加本地媒体流,连接流程如下所示。
1)A创建Offer
2)A保存Offer(设置本地描述)
3)A发送Offer给B
4)B保存Offer(设置远端描述)
5)B创建Answer
6)B保存Answer(设置本地描述)
7)B发送Answer给A
8)A保存Answer(设置远端描述)
9)A发送ICE Candidate给B
10)B发送ICE Candidate给A
11)A、B收到对方的媒体流并播放
这里我们不介绍具体API的使用及代码编写,只需要理解连接建立的流程即可。