Web开辟者开辟的步伐,Web开辟者可以基于集成WebRTC的浏览器提供的web API开辟基于视频、音频的实时通信应用。
Web API
面向第三方开辟者的WebRTC标准API(Javascript),使开辟者可以或许容易地开辟出类似于网络视频聊天的web应用,需要注意的是大概在不同浏览器中API接口名会不太一样, 以是保举使用这个JS适配器来和谐各个浏览器的不同接口。 这些API可分成Media API、 RTCPeerConnection、Peer-to-peer Data API三类:
Media API
RTCPeerConnection:一个RTCPeerConnection对象答应用户在两个浏览器之间直接通讯。 SDP: 用来描述当前连接者想要传输的内容,支持的协议范例,支持的编解码范例等。 RTCIceCandidate:表示一个ICE协议的候选者,简单的说,就是目标节点的IP以及端口。 RTCIceServer:表示一个ICE Server,其主要用于当前主机的IP发现,通过和ICE Server通讯,我们会得到一组可供连接使用的IPort候选值,两边通过交换ICE候选值来建立起连接。
Peer-to-peer Data API
DataChannel:数据通道( DataChannel)接口表示一个在两个节点之间的双向的数据通道,该通道可以设置成可靠传输或非可靠传输 。
WebRTC Native C++ API
本地C++ API层,使浏览器厂商容易实现WebRTC标准的Web API,抽象地对数字信号过程举行处理。
Transport / Session
NAT 的UDP简单穿越(Simple Traversal of UDP over NATs)是一种网络协议,它答应位于NAT(或多重NAT)后的客户端找出自己的公网地点,查出自己位于哪种范例的NAT之后以及NAT为某一个本地端口所绑定的Internet端端口。这些信息被用来在两个同时处于NAT路由器之后的主机之间建立UDP通信。
纵然通过 STUN 服务器取得了公用 IP 地点,也不一定能建立连线。因为不同的NAT范例处理传入的UDP分组的方式是不同的。四种主要范例中有三种是可以使用STUN穿透:完全圆锥型NAT、受限圆锥型NAT和端口受限圆锥型NAT。但大型公司网络中常常采用的对称型 NAT(又称为双向NAT)则不能使用,这类路由器会通过 NAT 布署所谓的「Symmetric NAT」限制。也就是说,路由器只会担当你之前连线过的节点所建立的连线。这类网络就需要TURN技术。
TURN
中继NAT实现的穿透(Traversal Using Relays around NAT)就是通过TURN服务器开启连线并转送所有数据,进而绕过Symmetric NAT的限制。你可通过TURN服务器建立连线,再告知所有端点传送封包至该服务器,最后让服务器转送封包给你。这个方法更耗时且更占频宽,因此在没有其他替代方案时才会使用这个方法。