Webrtc 中 dtls-srtp 应用的相关流程
RTCCertificateGenerator 类是产生在当前线程产生证书的作用。
GenerateCertificate 当前线程产生证书,这个证书可以指定一个有效期,最大有效期在一年
之内。
产生证书之后,通过 CreateFromCertificate 函数会对于证书生产一个摘要,然后组装到 sdp
里面的 ngerprint 字段里面发送给对方。通过 SSLVerifyCallback 回调函数校验这个 ngerprint
字段值和 dtls 协议获取的对方证书摘要是否一致。
WebRTC 是”网络实时通信”(Web Real Time Communication) 的缩写。他最初是为了解决浏览
器上视频通话而提出的,即两个浏览器之间直接进行视频和音频的通话,不经过服务器。后来发展
到除了音频和视频,还可以传输文字和其他数据。
WebRTC 主要让浏览器具备三个作用。
1. 获取音频和视频
2. 进行音频和视频通信
3. 进行任意数据的通信
WebRTC 有三个系列 API,分别对应上面的三个作用。
MediaStream 系列 API(主要是通过设备的摄像头以及话筒获得视频,音频的同步流)
RTCPeerConnection 系列 API(主要是 WebRTC 用于构建点对点之间稳定,高效的流传输的组
件)
RTCDataChannel(主要是使得浏览器之间(点对点)建立一个高吞吐量,低延迟的信道,用于传
输任意数据)
其中 RTCPeerConnection 是我们 WebRTC 的核心组件。
WebRTC 的链接基本流程
1. 首先 A,B 生产 RTCPeerConnection
2. 然后 A 调用 CreateOffer 生成 Description,调用 setLocalDescription,然后在把
Description 发送给 B
3. B 收到 A 的 Description 后,调用 setRemoteDescription,然后调用 CreateAnswer 生
成 B 的 Description,然后把 B 的 Description 发送给 A.
4. A 收到 B 的 Description 后,调用 setRemoteDescription.
还有一点,上面操作的过程中,RTCPeerConnection 可能产生 icecandidate 数据,需要把数
据传给对方。
基本流程如下:
1. A 实现 peer.onicecandidate,使其可以监听到 icecandidate 数据的产生
2. A 监听到 icecandidate 数据产生,通过信令服务器传输给 B.
3. B 收 到 来 自 A 的 icecandidate 数 据 , 调 用 peer.addicecandidate(new
RTCIcecandidate(message.candidate))设置数据
上面这个操作,A,B 都需要做,双方都会产生 icecandidate 数据,然后发送给对方。
评论0