WebRTC

**WebRTC** (**Web Real-Time Communication**) là một web API được phát triển bởi World Wide Web Consortium (W3C), khả năng hỗ trợ trình duyệt (browser) giao tiếp với nhau thông qua VideoCall, VoiceCall hay transfer data "Peer-to-Peer" (P2P) mà không cần browser phải cài thêm plugins hay phần mềm hỗ trợ nào từ bên ngoài.

## Lịch sử Phát triển
Lịch sử của WebRTC là lịch sử của mỗi công ty làm việc ở nhiều mảng khác nhau, ảnh hưởng lẫn nhau. Các công ty đó trở thành các công ty con cho một dự án lớn.

Tháng năm 2011, Google sử dụng nguồn tài chính, công nghệ, kỹ thuật sẵn có của mình đổ vào WebRTC, phát hành dự án mã nguồn mở cho trình duyệt giúp hỗ trợ tương tác với nhau thời gian thực (real-time communications), gọi là WebRTC. Công nghệ này nhằm chuẩn hóa các giao thức IETF vào các API của trình duyệt trong W3C. Đây cũng là thời điểm thúc đẩy việc sáp nhập các công ty con vào dự án, cụ thể là Google mua lại On2 (công ty sáng tạo ra chuẩn video codec VP8), Global IP solutions (công ty được cấp phép phát triển các thành phần cốt lõi nằm trong ngôn ngữ lập trình bậc thấp của WebRTC).

Dự án Chrome WebRTC được Google tạo ra khởi đầu cho các dự án mã nguồn mở mà Google muốn thực hiện, các nhà phát triển lúc này cũng dần bắt đầu chọn G.711, OPUS, và VP8 như một chuẩn video codec mới, nếu muốn hoạt động tốt trên trình duyệt sử dụng các API của WebRTC.

Công ty đầu tiên ứng dụng WebRTC là Ericsson (2011), tháng 12 / 2012, Chrome 23 là phiên bản đầu tiên hỗ trợ các API của WebRTC. Hiện nay (2015), WebRTC hỗ trợ tốt trên trình duyệt Chrome, Opera và Firefox.

Cốt lõi của WebRTC API nằm ở PeerConnection. Nhóm công tác dự án Real-Time Communications mô tả đặc điểm kỹ thuật để phát triển:
* Hoàn thành thảo luận về WebRTC tại IETF, xác định các bộ giao thức, xác định thông tin liên lạc thời gian thực trong các trình duyệt web trong khi không có một giao thức nào để thực hiện tốt nhiệm vụ ủy thác (delegation). SIP trên Websockets (RFC 7118) được sử dụng một phần là do các ứng dụng của SIP hầu hết giao tiếp sẵn có của phần mềm mã nguồn mở như JsSIP.
* Vấn đề bảo mật phát sinh trong việc truyền tải các streams giữa các client với nhau.
* Thảo luận kỹ thuật về việc thực hiện các kênh dữ liệu.
* Kinh nghiệm thu được qua các thử nghiệm đầu tiên.
* Nhận thông tin phản hồi từ các nhóm và cá nhân khác.

## Thiết Kế
Các phần chính của WebRTC bao gồm:
* getUserMedia, cho phép trình duyệt web truy cập vào camera và/hoặc microphone để lấy dữ liệu hình ảnh âm thanh cho việc truyền tải.
* RTCPeerConnection dùng để cài đặt videocall/voicecall dùng cho việc truyền tải.
* RTCDataChannel cho phép trình duyệt chia sẻ dữ liệu peer-to-peer.
WebRTC API bao gồm chức năng:
* getStats cho phép ứng dụng web lấy tập hợp các số liệu thống kê về các session WebRTC. Những dữ liệu thống kê được mô tả trong một tài liệu W3C riêng biệt.
Tính đến tháng 3 năm 2015, IETF WebRTC Codec và Truyền thông xử lý yêu cầu dự thảo đòi hỏi phải triển khai để cung cấp PCMA / PCMU (RFC 3551), tổ chức sự kiện như điện thoại DTMF (RFC 4733), và Opus (RFC 6716) codec âm thanh, tối thiểu là H.264 và video codec VP8. Các kênh PeerConnection, dữ liệu và các phương tiện truyền thông API được nói chi tiết trong W3C.

W3C phát triển ORTC (Object thời gian thực Truyền thông) cho WebRTC. Nên WebRTC thường gọi chính xác là WebRTC1.1.

## Tham khảo