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

Bun 1.1: JavaScript Runtime Mới Cho Full-Stack Development

Bun 1.1: JavaScript Runtime Mới Cho Full-Stack Development Bun là một JavaScript runtime mới nổi, được thiết kế từ đầu để thay thế Node.js trong nhiều trường hợp sử dụng….

Xem thêm

Flask 3.1: Micro Framework Web Python Hiện Đại Cho Dự Án Mới

Flask 3.1 là phiên bản mới nhất của framework web Python nhẹ nhất — và là một trong những dự án được tải nhiều nhất trên PyPI (trên 20 triệu…

Xem thêm
Minh họa lập trình Go 1.24 generic type aliases

Go 1.24: Generic Type Aliases, Tool Directives và Crypto Post-Quantum

Go 1.24 là bản phát hành mới nhất của ngôn ngữ lập trình Go, ra mắt tháng 2/2025 sáu tháng sau Go 1.23. Bản release này tập trung cải tiến…

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