WebRTC音视频开发之——通话原理-信令服务器(4)
一 概述
- 信令服务器概念
- 信令服务器工作原理
- 连接建立的过程
- 双方连接流程
二 信令服务器概念
从前面的介绍中我们知道了两个客户端的协商媒体信息和网络信息,那怎么去交换?是不是需要一个中间商去做交换?所以我们需要一个信令服务器(signal server)转换彼此的媒体行和网络信息。
我们在基于WebRTC API开发应用(App)时,可以将彼此的App连接到信令服务器,一般搭建在公网或者两端都可以访问到的局域网,借助信令服务器,就可以实现SDP(媒体信息)及Candidate(网络信息)交换
信令服务器不只是交换SDP和Candidate,还有其他功能,比如房间管理、用户列表、用户进入、用户退出等IM功能。
三 信令服务器工作原理
四 连接建立的过程
介绍完ICE框架中各个部分的含义之后,让我们来看看WebRTC连接建立的流程
- 连接双方(Peer)通过第三方服务器来交换(signaling)各自的SDP数据
- 连接双方通过STUN协议从STUN服务器那里获取到自己的NAT结构、子网IP和公网IP、端口,即Candidate信息
- 连接双方通过第三方服务器来交换各自的Candidate,如果连接双方在同一个NAT下,那它们仅通过内网Candidate就能建立起连接;如果它们处于不同NAT下,就需要通过STUN服务器识别出的公网Candidate进行通信
- 如果仅通过STUN服务器发现的公网Candidate任然无法建立连接,这就需要寻求TURN服务器提供的转发服务,然后将转发形式的Candidate共享给对象
- 连接双方目标IP端口发送报文,通过SDP数据中涉及的密匙及期望传输的内容建立起加密长连接
五 双方连接流程
下面用一个例子描述连接双方的具体步骤。A(local)和B(remote)代表两个人,初始并分别创建PeerConnection,并向peerConnection添加到本地媒体流,连接流程如下所示。
- A创建Offter
- A 保存Offer(设置本地描述)
- A发送Offer给B
- B保存Offer(设置远程描述)
- B创建Answer
- B保存Answer(设置本地描述)
- B发送Answer给A
- A保存Answer(设置远端描述)
- A发送ICE Candidate给B
- B发送ICE Candidate给A
- A、B收到对方的媒体流并播放