WebRTC là gì? Kết nối P2P thời gian thực cho web

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.

Sơ đồ WebRTC: signaling server trao đổi SDP offer/answer và ICE candidate, thiết lập kết nối P2P qua STUN/TURN, luồng media truyền trực tiếp peer-to-peer

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

Ví dụ code JavaScript tạo RTCPeerConnection, addStream từ getUserMedia, tạo offer setLocalDescription, gửi qua signaling server WebSocket

Ứ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.

Tôi là một lập trình viên IOS. Code chính là IOS nhưng thỉnnh thoảng vẫn đá sang Android hoặc web. Mặc dù không quá thông thạo nhưng tôi sẽ chia sẻ những kiến thức mà mình đã tìm hiểu, áp dụng qua.

Bài viết liên quan

PostgreSQL Indexing nâng cao: B-tree, Hash, GIN, GiST, BRIN cho hiệu năng tối đa

PostgreSQL Indexing nâng cao: B-tree, Hash, GIN, GiST, BRIN cho hiệu năng tối đa PostgreSQL cung cấp 6 loại index chính: B-tree (mặc định), Hash, GIN, GiST, SP-GiST và BRIN….

Xem thêm

Database Sharding là gì? Chiến lược chia dữ liệu cho hệ thống lớn

Khi website hay ứng dụng phát triển nhanh, lượng người dùng và dữ liệu tăng gấp hàng triệu lần, database đơn lẻ trở thành điểm nghẽn. Database sharding là kỹ…

Xem thêm

Astro Framework: Island Architecture cho web hiệu năng cao

Astro là gì? Astro là framework web hiện đại xây dựng dựa trên kiến trúc Island Architecture, tập trung tối ưu hiệu suất bằng cách gửi HTML tĩnh đến trình…

Xem thêm
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất