Javascript peer\u connection.onicecandidate()函数做什么?什么是ice\u事件?
我很难理解onicecandidate函数的范围。 ice候选者如何帮助建立对等连接。谁首先发送ice候选者?Javascript peer\u connection.onicecandidate()函数做什么?什么是ice\u事件?,javascript,webrtc,Javascript,Webrtc,我很难理解onicecandidate函数的范围。 ice候选者如何帮助建立对等连接。谁首先发送ice候选者? 在后台,webrtc根据可用的网络连接和通过JSAPI传递给它的ice服务器列表来收集本地候选服务器 一旦ice候选者准备就绪,它将通过onicecandidate API提供给JS层 如果您使用的是涓流ICE,那么您可以立即通过信令路径将候选者发送到远程对等方。否则,等待最后一个(空)候选,按优先级排序,将它们添加到提供/应答sdp,并通过信令路径发送提供/应答。这通常由浏览器自动完
- 在后台,webrtc根据可用的网络连接和通过JSAPI传递给它的ice服务器列表来收集本地候选服务器
- 一旦ice候选者准备就绪,它将通过onicecandidate API提供给JS层
- 如果您使用的是涓流ICE,那么您可以立即通过信令路径将候选者发送到远程对等方。否则,等待最后一个(空)候选,按优先级排序,将它们添加到提供/应答sdp,并通过信令路径发送提供/应答。这通常由浏览器自动完成
- 您可以在此处查看握手规范:
- 对等设备将无法使用自己的专用IP将媒体流传输到其他对等设备。所以我们需要NAT穿越服务器(ICE服务器)将私有IP映射到公共IP
因此,客户端应用程序应该向ICE服务器请求他自己的ICE候选者“这是公共id”
首先,呼叫方将请求其公共IP(ICE候选),并通过信令服务器将其发送给另一个对等方
当另一个人收到候选人时,他向ICE服务器询问他自己的候选人,并将其发送回给来电者
当两个对等点彼此拥有ice候选点(公共IP)时,他们可以进行P2P流
冰问题
20%ICE服务器-STUN协议将无法提供公共IP。因为两个媒体设备都位于对称NAT后面!或者P2P流量被防火墙拦截
在这种情况下,P2P流媒体将不可靠!
为了解决这些问题,我们必须使用外部媒体中继服务器–TURN服务器,这是ICE服务器支持的协议
下面是一个例子:
connection.onicecandidate = function(newRTCPeerConnectionIceEvent) {
// a new candidate has been created
var newRTCIceCandidate = newRTCPeerConnectionIceEvent.candidate;
// could send this to the remote peer
};
候选者代表媒体流的目的地(发送或接收),在SDP中看起来如下:
a=candidate:1 1 UDP 2130706431 10.0.1.1 8998 typ host