📅 16 Mei 2026 | ⏱ 6 menit baca
🔧 Troubleshooting WebRTC ICE Failed
WebRTCICETroubleshootingDebug
Error "ICE Failed" adalah masalah paling umum saat membangun aplikasi WebRTC. Ini terjadi ketika dua perangkat gagal menemukan jalur koneksi langsung. Berikut solusi lengkapnya.
Apa itu ICE Failed?
ICE (Interactive Connectivity Establishment) adalah proses menemukan jalur terbaik antara dua peer. Jika semua kandidat (host, srflx, relay) gagal, WebRTC akan throw error ICE Failed.
Penyebab Umum
- 🔒 NAT Simetris — Setiap koneksi keluar pakai port berbeda
- 🔥 Firewall korporat — Blokir port UDP
- 📱 CGNAT (Mobile Carrier) — Provider 4G/5G tertentu
- ❌ STUN server down — Server stun.l.google.com bermasalah
- ⚙️ Mismatch SDP — Offer/Answer tidak cocok
Langkah Debug ICE Failed
1. Cek di chrome://webrtc-internals — Buka tab ini saat koneksi gagal, cek bagian "iceConnectionState".
2. Lihat log ICE di console browser — Tambahkan event listener:
pc.oniceconnectionstatechange = () => {
console.log('ICE State:', pc.iceConnectionState);
};
pc.onicecandidate = (event) => {
if (event.candidate) {
console.log('ICE Candidate:', event.candidate.type, event.candidate.address);
}
};
3. Pastikan TURN server berfungsi — Test dengan tool online atau curl.
4. Coba disable VPN atau firewall sementara — Banyak VPN memblokir WebRTC.
Solusi Berdasarkan Kasus
- NAT Simetris → Wajib pakai TURN server, STUN tidak cukup
- Firewall ketat → Gunakan TURN over TCP (port 443)
- Mobile carrier → Sama seperti NAT simetris, butuh TURN
- STUN server down → Ganti ke stun:stun.cloudflare.com:3478
💡 Chat AIoT menyediakan TURN server gratis yang sudah dikonfigurasi. Jika Anda deploy sendiri, gunakan Coturn sebagai TURN server.