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

Debugging là gì: quy trình, kỹ thuật và công cụ tìm lỗi

Debugging là gì: quy trình, kỹ thuật và công cụ tìm lỗi phần mềm Debugging là quá trình phát hiện, cô lập và khắc phục lỗi trong phần mềm. Từ…

Xem thêm

Terraform là gì: công cụ Infrastructure as Code của HashiCorp

Terraform là gì: công cụ Infrastructure as Code của HashiCorp Terraform là một công cụ Infrastructure as Code (IaC) do HashiCorp phát triển, cho phép người dùng khai báo và…

Xem thêm

Fortran là gì: ngôn ngữ lập trình cho tính toán khoa học

Fortran là gì: ngôn ngữ lập trình cho tính toán khoa học Fortran là gì? Đây là ngôn ngữ lập trình cao cấp được thiết kế riêng cho các bài…

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