RTCPeerConnection API
是每个浏览器之间点对点连接的核心,RTCPeerConnection
是WebRTC
组件,用于处理对等体之间流数据的稳定和有效通信。
RTCPeerConnection
可以保护Web开发人员免受潜伏在其中的无数复杂性的影响。WebRTC
使用的编解码器和协议可以进行大量工作,即使在不可靠的网络上也可以进行实时通信:
- 丢包隐藏
- 回声消除
- 带宽适应性
- 动态抖动缓冲
- 自动增益控制
- 降噪和抑制
- 图像’清洁’。
// 创建实例
let pc = RTCPeerConnection(serverConfig);
根据你是发起者还是被发起对象,在连接的每一边会使用稍微不同的方式使用RtcPeerConnection
对象。
serverConfigconfig
配置参数中包含iceServers
参数。它是包含有关STUN
和TURN
服务器的信息的URL
对象数组,在查找ICE
候选时使用。可以在code.google.com
找到可用的公共STUN
服务器的列表。
现实中,无论你的应用如何见到那,webRTC
都需要服务器,因为:
- 通信用户发现彼此并交换自己的“真实世界”的详细信息;
webRTC
客户端(对等方)交换网络信息;peers
交换有关每天的数据,如视频格式和分辨率webRTC
客户端遍历NAT
网关和防火墙
换句话说,WebRTC
需要四种类型的服务器端功能:
- 发现用户并沟通。
- 使用
STUN
服务器连接用户信号。 - 使用
NAT
/防火墙遍历。 - 在对等通信失败的情况下,使用中继服务器。
ICE
是用于连接对等体的框架,例如两个视频聊天客户端。最初,ICE
尝试通过UDP
直接连接对等端,以尽可能低的延迟。在此过程中,STUN
服务器只有一个任务:使NAT
后面的对等体能够找到其公共地址和端口。
下面是调用流程:
1.获取本地媒体设备成功之后,创建一个新的RTCPeerConnection
对象,初始化将本地音视频轨道加入到RTCPeerConnection
function createConn(stream) {
localStream = stream
// 显示本地视频流
localVideo.srcObject = stream;
//谷歌公共stun服务器
let serverConfig = {
"iceServers": [
{
"urls": ["turn:192.168.1.133:3478"],
"username": "webrtc",
"credential": "webrtc"
}
]
};
// 呼叫者
let localPeer <