navigator.mediaDevices.getUserMedia({audio:true,redio:true})
获取用户的摄像头状态,返回媒体流,把媒体流赋给video的srcObject属性,就能在页面上展示自己的音视频
let peer = new RTCPeerConnection(servers)
创建peer实例,通过这个实例的一系列方法实现p2p连接.其中传递的参数servers
为TURN和STUN服务,用于NAT穿越
peer.addIceCandidate(candidate)
交换身份.用于把建立连接的对方的网络信息添加到自己的本地中.
对方的网络信息:在普通的网络环境中,ip地址就可以用来标记它,但是现在一般会把对方的网络信息隐藏在NAT网络中,这种情况下就需要使用STUN协议穿透NAT.1但是在有的情况下,有的网络设备屏蔽了STUN的识别能力,这时就需要使用TURN协议实现媒体中转服务2.
上述方案已经被webrtc内置了,即ICE框架,在创建peer实例的时候要告诉程序STUN,TURN服务器的相关信息
signaling服务器(信令服务器)
用于传输各自的身份信息以及描述信息,一般使用websocket实现
peer.onicecandidate = function(e) {
socket.emit('icecandidate', e.candidate) // socket是假设的一个websocket实例
}//onicecandidate事件会在创建offer或者answer的时候被调用
socket.on('icecandidate', function(e<