RTCIceCandidatePairStats
Baseline Widely available *
This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.
* Some parts of this feature may have varying levels of support.
TheRTCIceCandidatePairStats dictionary of theWebRTC API is used to report statistics that provide insight into the quality and performance of anRTCPeerConnection while connected and configured as described by the specified pair ofICE candidates.
The statistics can be obtained by iterating theRTCStatsReport returned byRTCPeerConnection.getStats() until you find an entry with thetype of"candidate-pair".
In this article
Instance properties
availableIncomingBitrateOptionalA number representing the available inbound capacity of the network.This reports the total number of bits per second available for all of the candidate pair's incomingRTP streams.It does not take into account the size of the Internet Protocol (IP) overhead, nor any other transport layers such asTCP orUDP.
availableOutgoingBitrateOptionalA number representing the approximate available outbound capacity of the network.This reports the total number of bits per second available for all of the candidate pair's outgoingRTP streams.It does not take into account the size of the IP overhead, nor any other transport layers such asTCP orUDP.
bytesDiscardedOnSendOptionalExperimentalAn integer representing the total number of bytes discarded due to socket errors on this candidate pair.
bytesReceivedOptionalAn integer representing the total number of payload bytes received on this candidate pair.
bytesSentOptionalAn integer representing the total number of payload bytes sent on this candidate pair (the total number of bytes sent excluding any headers, padding, or other protocol overhead).
consentRequestsSentOptionalExperimentalAn integer representing the total number ofSTUN consent requests sent on this candidate pair.
currentRoundTripTimeOptionalA number representing the total time, in seconds, that elapsed between the most recently-sent STUN request and the response being received.This may be based upon requests that were involved in confirming permission to open the connection.
lastPacketReceivedTimestampOptionalA
DOMHighResTimeStampvalue indicating the time at which the last packet was received by the local peer from the remote peer for this candidate pair. Timestamps are not recorded for STUN packets.lastPacketSentTimestampOptionalA
DOMHighResTimeStampvalue indicating the time at which the last packet was sent from the local peer to the remote peer for this candidate pair. Timestamps are not recorded for STUN packets.localCandidateIdOptionalA string representing the unique ID corresponding to the
RTCIceCandidatefrom the data included in theRTCIceCandidateStatsobject providing statistics for the candidate pair's local candidate.nominatedOptionalA Boolean value which, if
true, indicates that the candidate pair described by this object is one which has been proposed for use, and will be (or was) used if its priority is the highest among the nominated candidate pairs. SeeRFC 5245, section 7.1.3.2.4 for details.packetsDiscardedOnSendOptionalExperimentalAn integer representing the total number of packets discarded due to socket errors on this candidate pair.
packetsReceivedOptionalExperimentalAn integer representing the total number of packets received on this candidate pair.
packetsSentOptionalExperimentalAn integer representing the total number of packets sent on this candidate pair.
remoteCandidateIdOptionalA string containing a unique ID corresponding to the remote candidate from which data was taken to construct the
RTCIceCandidateStatsobject describing the remote end of the connection.requestsReceivedOptionalAn integer representing the total number of connectivity check requests that have been received, including retransmissions. This value includes both connectivity checks and STUN consent checks.
requestsSentOptionalAn integer representing the total number of connectivity check requests that have been sent,not including retransmissions.
responsesReceivedOptionalAn integer representing the total number of connectivity check responses that have been received.
responsesSentOptionalAn integer representing the total number of connectivity check responses that have been sent. This includes both connectivity check requests and STUN consent requests.
stateOptionalA string which indicates the state of the connection between the two candidates.
totalRoundTripTimeOptionalA number indicating the total time, in seconds, that has elapsed between sending STUN requests and receiving responses to them, for all such requests made to date on this candidate pair.This includes both connectivity check and consent check requests. You can compute the average round trip time (RTT) by dividing this value by
responsesReceived.transportIdOptionalA string that uniquely identifies the
RTCIceTransportthat was inspected to obtain the transport-related statistics (as found inRTCTransportStats) used in generating this object.
Common instance properties
The following properties are common to all WebRTC statistics objects.
idA string that uniquely identifies the object that is being monitored to produce this set of statistics.
timestampA
DOMHighResTimeStampobject indicating the time at which the sample was taken for this statistics object.typeA string with the value
"candidate-pair", indicating the type of statistics that the object contains.
Deprecated properties
The following properties have been removed from the specification and should no longer be used.You should update any existing code to avoid using them as soon as is practical.Check thecompatibility table for details on which browsers support them and in which versions.
priorityDeprecatedOptionalNon-standardAn integer value indicating the candidate pair's priority.
readableDeprecatedOptionalNon-standardA Boolean value indicating whether or not data can be sent over the connection described by the candidate pair.
writableDeprecatedOptionalNon-standardA Boolean value indicating whether or not data can be received on the connection described by the candidate pair.
Non-standard properties
selectedNon-standardOptionalA Firefox-specific Boolean value which is
trueif the candidate pair described by this object is the one currently in use.The spec-compliant way to determine the selected candidate pair is to look for a stats object of typetransport, which is anRTCTransportStatsobject.That object'sselectedCandidatePairIdproperty indicates whether or not the specified transport is the one being used.
Usage notes
The currently-active ICE candidate pair—if any—can be obtained by calling theRTCIceTransport methodgetSelectedCandidatePair(), which returns anRTCIceCandidatePair object, ornull if there isn't a pair selected.The active candidate pair describes the current configuration of the two ends of theRTCPeerConnection.
Any candidate pair that isn't the active pair of candidates for a transport gets deleted if theRTCIceTransport performs an ICE restart, at which point thestate of the ICE transport returns tonew and negotiation starts once again.For more information, seeICE restart.
Example
This example computes the average time elapsed between connectivity checks.
if (rtcStats && rtcStats.type === "candidate-pair") { let elapsed = (rtcStats.lastRequestTimestamp - rtcStats.firstRequestTimestamp) / rtcStats.requestsSent; console.log(`Average time between ICE connectivity checks: ${elapsed} ms.`);}The code begins by looking atrtcStats to see if itstype iscandidate-pair.If it is, then we know thatrtcStats is in fact anRTCIceCandidatePairStats object.We can then compute the average time elapsed between STUN connectivity checks and log that information.
Specifications
| Specification |
|---|
| Identifiers for WebRTC's Statistics API> # dom-rtcstatstype-candidate-pair> |