根据目前在Firefox中实现但未在Chrome中实现的
规范,您可以从可用候选对的统计数据中找出活动候选者。这些统计数据包括:
dictionary RTCIceCandidatePairStats : RTCStats {
DOMString transportId;
DOMString localCandidateId;
DOMString remoteCandidateId;
RTCStatsIceCandidatePairState state;
unsigned long long priority;
boolean nominated;
boolean writable;
boolean readable;
unsigned long long bytesSent;
unsigned long long bytesReceived;
double roundTripTime;
double availableOutgoingBitrate;
double availableIncomingBitrate;
};
结合个别候选人的统计数据:
dictionary RTCIceCandidateAttributes : RTCStats {
DOMString ipAddress;
long portNumber;
DOMString transport;
RTCStatsIceCandidateType candidateType;
long priority;
DOMString addressSourceUrl;
};
使用
peerConnection.getStats()
查找已被提名且成功的ice候选对。
pc.getStats(null))
.then(function(stats) {
return Object.keys(stats).forEach(function(key) {
if (stats[key].type == "candidatepair" &&
stats[key].nominated && stats[key].state == "succeeded") {
var remote = stats[stats[key].remoteCandidateId];
console.log("Connected to: " + remote.ipAddress +":"+
remote.portNumber +" "+ remote.transport +
" "+ remote.candidateType);
}
});
})
.catch(function(e) { console.log(e.name); });
这可能会输出类似以下内容的结果:
Connected to: 192.168.1.2:49190 udp host
您可以针对局域网范围进行测试。如果返回的结果类似于:
Connected to: 24.57.143.7:61102 udp relayed
那么您将拥有一个TURN连接。
这里有一个jsfiddle演示了这一点(由于其他原因需要使用Firefox Developer Edition)。