📅 28 Apr 2026 | ⏱ 7 menit baca | 👤 SUGENKWAVE NUSANTARA TECH
🌐 Apa itu WebRTC? Teknologi P2P untuk Komunikasi Real-time
WebRTC
P2P
JavaScript
Real-time
Enkripsi
WebRTC (Web Real-Time Communication) adalah teknologi revolusioner yang memungkinkan browser berkomunikasi langsung satu sama lain tanpa server perantara. Teknologi ini menjadi fondasi aplikasi video call, chat P2P, dan IoT modern.
Sejarah dan Latar Belakang
WebRTC dikembangkan oleh Google pada tahun 2011 dan diakuisisi dari perusahaan GIPS (Global IP Solutions). Pada tahun 2012, Google membuka kode sumber WebRTC dan menyerahkannya ke W3C untuk dijadikan standar web terbuka.
Sebelum WebRTC ada, komunikasi real-time di browser membutuhkan plugin seperti Flash atau Java Applet. WebRTC menghilangkan ketergantungan tersebut dengan mengintegrasikan kemampuan komunikasi langsung ke dalam browser modern.
Cara Kerja WebRTC
WebRTC bekerja dalam tiga tahap utama: Signaling, ICE Gathering, dan Media Transfer.
Tahap 1: Signaling
Signaling adalah proses pertukaran informasi awal antara dua peer sebelum koneksi langsung terbentuk. Informasi yang dipertukarkan disebut SDP (Session Description Protocol) yang berisi detail tentang codec, format media, dan kemampuan masing-masing browser.
PEER A SIGNALING SERVER PEER B
| | |
|--- Offer SDP -------> | |
| |--- Offer SDP ---------->|
| |<-- Answer SDP ----------|
|<-- Answer SDP ------- | |
| | |
|<====== Koneksi P2P Langsung Terbentuk =========>|
Tahap 2: ICE Gathering
ICE (Interactive Connectivity Establishment) adalah framework untuk menemukan jalur terbaik antara dua peer. ICE mencoba tiga jenis koneksi:
- Host candidate: Koneksi langsung via IP lokal
- Server Reflexive (srflx): Koneksi via IP publik dari server STUN
- Relay candidate: Koneksi via server TURN sebagai relay
Tahap 3: Media Transfer
Setelah koneksi terbentuk, data mengalir langsung antara dua peer menggunakan SRTP untuk media dan SCTP untuk DataChannel. Semua data dienkripsi dengan DTLS.
Komponen Utama WebRTC API
RTCPeerConnection
API utama yang mengelola seluruh siklus hidup koneksi WebRTC.
// Contoh RTCPeerConnection dengan STUN server publik
const pc = new RTCPeerConnection({
iceServers: [
{ urls: 'stun:stun.l.google.com:19302' },
{
urls: 'turn:your-turn-server.com:3478',
username: 'your-username',
credential: 'your-credential'
}
]
});
pc.onicecandidate = (event) => {
if (event.candidate) {
sendViaSignaling(event.candidate);
}
};
RTCDataChannel
Memungkinkan pengiriman data arbitrary secara P2P tanpa server.
const dc = pc.createDataChannel('chat', {
ordered: true,
maxRetransmits: 3
});
dc.send(JSON.stringify({
type: 'MSG',
data: encryptedMessage,
time: Date.now()
}));
dc.onmessage = (event) => {
const msg = JSON.parse(event.data);
};
MediaStream API
const stream = await navigator.mediaDevices.getUserMedia({
audio: { echoCancellation: true, noiseSuppression: true },
video: { width: 1280, height: 720 }
});
stream.getTracks().forEach(track => pc.addTrack(track, stream));
Keamanan WebRTC
- DTLS: Mengenkripsi semua data DataChannel
- SRTP: Mengenkripsi stream audio dan video
- Mandatory Encryption: Tidak bisa dinonaktifkan
💡 Aplikasi P2P yang baik menambahkan enkripsi end-to-end di atas WebRTC, seperti ECDH/AES-256-GCM untuk keamanan berlapis.
STUN vs TURN
STUN membantu perangkat menemukan IP publiknya — ringan, hanya digunakan saat negosiasi. TURN adalah fallback saat koneksi langsung tidak bisa dilakukan — meneruskan semua paket, membutuhkan bandwidth lebih besar.