files/en-us/web/api/rtcicetransport/statechange_event/index.md
{{APIRef("WebRTC")}}
A statechange event occurs when the {{domxref("RTCIceTransport")}} changes state. The {{domxref("RTCIceTransport.state", "state")}} can be used to determine how far through the process of examining, verifying, and selecting a valid candidate pair is prior to successfully connecting the two peers for WebRTC communications.
This event is not cancelable and does not bubble.
Use the event name in methods like {{domxref("EventTarget.addEventListener", "addEventListener()")}}, or set an event handler property.
addEventListener("statechange", (event) => { })
onstatechange = (event) => { }
A generic {{domxref("Event")}}.
Given an {{domxref("RTCPeerConnection")}}, pc, the following code creates an event handler that calls a function named handleFailure() if the ICE transport enters a failure state.
let iceTransport = pc.getSenders()[0].transport.iceTransport;
iceTransport.addEventListener("statechange", (ev) => {
if (iceTransport.state === "failed") {
handleFailure(pc);
}
});
The same code, using the onstatechange event handler property, looks like this:
let iceTransport = pc.getSenders()[0].transport.iceTransport;
iceTransport.onstatechange = (ev) => {
if (iceTransport.state === "failed") {
handleFailure(pc);
}
};
{{Specifications}}
{{Compat}}