我发现以下几行语句(代码)在 Pro JavaScript Development
而 谷歌林.
// Google chrome often finds multiple candidates, so let's ensure we only
// ever get the first it supplies by removing the event handler once a
// candidate has been found
that.peerConnection.onicecandidate = null;
...
that.peerConnection.addIceCandidate(new IceCandidate(JSON.parse(candidate)))
我们找到候选者后,避免使用icecandidate是好的做法吗?
不对。不要这样做!
有不同类型的 冰候选人: host
, srflx
, prflx
, relay
.
因此,它不能保证在对等体之间的第一次协商时,他们将被连接。他们会尝试用不同的路由(不知道具体应该说什么)STUN、TURN服务器进行连接。第一次尝试使用STUN服务器进行协商时,我们假设两个对等体都连接成功。但是如果他们没有连接呢?他们会尝试用TURN服务器连接。
因此,如果我们去掉STUN服务器上的 onicecandidate
监听器,在我们得到冰候选者后将其赋值为null,那么我们就不能保证对等体之间的连接。