我很难理解onicecandidate功能的目的。 冰候选人如何帮助建立同伴关系。谁先发送冰候选人?
答案 0 :(得分:2)
答案 1 :(得分:1)
对等设备将无法使用自己的私有IP将媒体流式传输到其他对等方。因此,我们需要NAT遍历服务器(ICE服务器)将私有IP映射到公共IP。
因此客户端应用程序应该向ICE服务器询问他自己的ICE候选人“这是公共ID”。
首先,呼叫者将要求他的公共IP(ICE候选者)并通过信令服务器将其发送给另一个对等体。
当另一个人收到候选人时,他也向ICE服务器询问他自己的候选人并将其发回给来电者。
当两个对等方互相拥有冰候选者(公共IP)时,他们就可以进行P2P流媒体传输。
ICE问题
20%ICE服务器 - STUN协议在提供公共IP时将失败。因为这两个媒体设备都位于对称NAT后面!或防火墙阻止的P2P流量!
在这种情况下,P2P流媒体将不可靠! 要解决这些问题,我们必须使用外部媒体中继服务器 - TURN服务器,它是ICE服务器支持的协议
答案 2 :(得分:0)
以下是一个例子:
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