
WebRTC là gì? Kết nối P2P thời gian thực cho web
WebRTC (Web Real-Time Communication) là bộ API trình duyệt cho phép truyền audio, video, data trực tiếp giữa các peer (P2P) mà không cần plugin hay server trung gian cho luồng media. Dùng cho video call, screen sharing, game online, file transfer.

Cách hoạt động WebRTC:
1. Signaling: Hai peer trao đổi thông tin kết nối (SDP offer/answer, ICE candidates) qua signaling server (WebSocket, HTTP). Server không tham gia luồng media.
2. NAT Traversal: Sử dụng STUN (địa chỉ public) và TURN (relay khi P2P thất bại) để vượt qua NAT/firewall.
3. ICE (Interactive Connectivity Establishment): Thu thập candidate, chọn đường đi tối ưu cho kết nối P2P.
4. Media Stream: getUserMedia() truy cập camera/microphone, RTCPeerConnection truyền luồng media đã mã hóa (DTLS/SRTP).
Các API chính:
– RTCPeerConnection: Quản lý kết nối P2P, ICE, DTLS, codecnego
– RTCDataChannel: Truyền data tùy ý (file, game state, chat) độ trễ thấp, reliable/unreliable
– MediaDevices.getUserMedia(): Truy cập camera, microphone, màn hình

Ứng dụng phổ biến:
– Video conference: Google Meet, Discord, Jitsi
– Screen sharing: trình bày, hỗ trợ từ xa
– Game multiplayer realtime: WebRTC data channel
– IoT: truyền cảm biến, camera về dashboard
– File transfer P2P: ShareDrop, Firefox Send
WebRTC vs WebSocket:
| Đặc điểm | WebRTC | WebSocket |
|---|---|---|
| Kết nối | P2P (media/data) | Client-Server |
| Độ trễ | Rất thấp (< 100ms) | Thấp (~10-50ms) |
| Mã hóa | Bắt buộc (DTLS/SRTP) | Tuỳ chọn (WSS) |
| NAT traversal | STUN/TURN built-in | Cần proxy/relay |
| Binary data | DataChannel (SCTP) | Binary frames |
Thử thách:
– Signaling không chuẩn: cần tự thiết kế protocol
– NAT/Firewall phức tạp: cần TURN server cho trường hợp khó
– Scalability: mesh P2P giới hạn ~10-20 peer, cần SFU/MCU cho group call
– Mobile: tiêu thụ pin, băng thông lớn
Tài nguyên học tập:
– webrtc.org — tài liệu chính thức
– webrtc/samples — demo code
– MDN WebRTC API
WebRTC là nền tảng của truyền thông thời gian thực hiện đại, cho phép xây dựng ứng dụng video call, game, collaboration không phụ thuộc server media trung tâm.
