RTCPeerConnection.iceConnectionState

This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

The read-only property RTCPeerConnection.iceConnectionState returns an enum of type RTCIceConnectionState which state of the ICE agent associated with the RTCPeerConnection.

You can detect when this value has changed by watching for the iceconnectionstatechange event.

Syntax

 var state = RTCPeerConnection.iceConnectionState;

Value

The current state of the ICE agent and its connection. The value is one of the strings in the RTCIceConnectionState enum.

RTCIceConnectionState enum

The RTCIceConnectionState enum defines the string constants used to describe the current state of the ICE agent and its connection to the ICE server (that is, the STUN or TURN server).

Constant Description
"new" The ICE agent is gathering addresses or is waiting to be given remote candidates through calls to RTCPeerConnection.addIceCandidate() (or both).
"checking" The ICE agent has been given one or more remote candidates and is checking pairs of local and remote candidates against one another to try to find a compatible match, but has not yet found a pair which will allow the peer connection to be made. It's possible that gathering of candidates is also still underway.
"connected" A usable pairing of local and remote candidates has been found for all components of the connection, and the connection has been established. It's possible that gathering is still underway, and it's also possible that the ICE agent is still checking candidates against one another looking for a better connection to use.
"completed" The ICE agent has finished gathering candidates, has checked all pairs against one another, and has found a connection for all components.
"failed" The ICE candidate has checked all candidates pairs against one another and has failed to find compatible matches for all components of the connection. It is, however, possible that the ICE agent did find compatible connections for some components.
"disconnected" Checks to ensure that components are still connected failed for at least one component of the RTCPeerConnection. This is a less stringent test than "failed" and may trigger intermittently and resolve just as spontaneously on less reliable networks, or during temporary disconnections. When the problem resolves, the connection may return to the "connected" state.
"closed" The ICE agent for this RTCPeerConnection has shut down and is no longer handling requests.

Example

var pc = new RTCPeerConnection();
var state = pc.iceConnectionState;

Specifications

Specification Status Comment
WebRTC 1.0: Real-time Communication Between Browsers
The definition of 'RTCPeerConnection.iceConnectionState' in that specification.
Candidate Recommendation Initial specification.

Browser compatibility

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidiOS SafariSamsung Internet
Basic supportChrome Full support 48
Notes
Full support 48
Notes
Notes disconnected
Edge Full support 15Firefox Full support 52IE ? Opera Full support 43
Notes
Full support 43
Notes
Notes Promise based version.
No support 37 — 43
Safari ? WebView Android Full support 48
Notes
Full support 48
Notes
Notes disconnected
Chrome Android Full support 57Edge Mobile ? Firefox Android ? Opera Android Full support 43
Notes
Full support 43
Notes
Notes Promise based version.
No support 37 — 43
Safari iOS ? Samsung Internet Android Full support 7.0

Legend

Full support  
Full support
Compatibility unknown  
Compatibility unknown
See implementation notes.
See implementation notes.

See also

Document Tags and Contributors

Contributors to this page: fscholz, FeRDNYC, jpmedley, abbycar, Sheppy, teoli
Last updated by: fscholz,