Get in Touch With Us

Submitting the form below will ensure a prompt response from us.

What is a WebRTC ICE Candidate?

In WebRTC (Web Real-Time Communication), an ICE candidate (Interactive Connectivity Establishment candidate) is a potential method or route through which two peers (browsers or applications) can connect directly with each other to establish a real-time connection. These candidates include IP addresses and port numbers that can be used for direct peer-to-peer communication.

Why are ICE Candidates Needed in WebRTC?

WebRTC is designed to enable peer-to-peer communication for video, audio, or data sharing without requiring a central server to relay the content. However, in real-world scenarios, networks are often behind NATs (Network Address Translators) or firewalls, making direct connections difficult. ICE candidates help in identifying all possible paths (e.g., local IPs, public IPs, TURN server routes) to establish the best possible connection between peers.

Types of ICE Candidates

There are three main types of ICE candidates in WebRTC:

Host Candidates:

  • These are local IP addresses on the device.
  • Fastest and most direct, but usually blocked when behind NATs or firewalls.

Server-reflexive Candidates (STUN):

  • Discovered using a STUN server to determine the public IP of a device behind NAT.
  • More likely to work across different networks.

Relay Candidates (TURN):

  • Involve routing data through a TURN server.
  • Used as a last resort when direct peer-to-peer connections fail.
  • Reliable, but adds latency due to the middle server.

How Does the ICE Candidate Process Work?

  1. When a peer wants to connect, it gathers all possible ICE candidates (host, reflexive, relay).
  2. These candidates are sent to the other peer through signaling (outside of WebRTC, usually via WebSocket or HTTP).
  3. Both peers exchange candidates and try different combinations to find the optimal connection path.
  4. Once the best route is found, the ICE connection state changes to “connected” or “completed”.

Code Example of Handling ICE Candidates

peerConnection.onicecandidate = function(event) {
if (event.candidate) {
// Send the candidate to the remote peer using your signaling mechanism
sendToServer({
type: "new-ice-candidate",
candidate: event.candidate
});
}
};

This JavaScript snippet listens for ICE candidates and sends them to the remote peer.

What Happens if No ICE Candidate Works?

If none of the ICE candidates can successfully establish a connection, the WebRTC connection will fail. This can happen due to strict NAT types or blocked ports. Using a TURN server as a fallback helps increase the chances of establishing a successful connection.

Build Smart Communication Systems

Let us help you design WebRTC-powered solutions that ensure high connectivity, even when ICE candidates fail. Optimize for reliability and speed today.

Connect with Us Now

Conclusion

A WebRTC ICE Candidate is a building block of peer-to-peer communication. It represents a potential network path that two peers can use to connect. By collecting and exchanging these candidates, WebRTC can traverse complex network environments and establish real-time connections efficiently. Understanding how ICE candidates work is essential for debugging connectivity issues and building robust real-time applications.

About Author

Jayanti Katariya is the CEO of Moon Technolabs, a fast-growing IT solutions provider, with 18+ years of experience in the industry. Passionate about developing creative apps from a young age, he pursued an engineering degree to further this interest. Under his leadership, Moon Technolabs has helped numerous brands establish their online presence and he has also launched an invoicing software that assists businesses to streamline their financial operations.

Related Q&A

Call Us Now

usa +1 (620) 330-9814
OR
+65
OR

You can send us mail

sales@moontechnolabs.com