Lời mở đầu Chương 2 – Tổng quan về WebRTC. Chương này giới thiệu chung về lịch sử, sự tiện lợi, các APIs và giao thức được sử dụng trong WebRTC Chương 3 – Báo hiệu, thiết lập phiên trong WebRTC. Chương này đi sâu vào tìm hiểu, phân tích việc sử dụng báo hiệu và kênh báo hiệu để thiết lập phiên kết nối Peer- to-peer trong WebRTC. Chương 4 – Ứng dụng WebRTC trong giải pháp cộng tác và chia sẻ dữ liệu đa Phương tiện tại Trung tâm MVAS – TCT Viễn thông Mobifone.
Chương này giới thiệu các cách tiếp cận sử dụng WebRTC trong xây dựng ứng dụng, giới thiệu framework EasyRTC và sử dụng EasyRTC demo ứng dụng cộng tác tại Trung tâm MVAS – TCT viễn thông Mobifone. Chương 5 - Kết luận: Kết quả đạt được và hướng phát triển tiếp theo. TỔNG QUAN VỀ WEBRTC WebRTC (Web Real-Time Communication) [26] là một tiêu chuẩn định nghĩa một tập hợp các giao thức truyền thông và các giao diện lập trình ứng dụng cho phép truyền thông thời gian thực trên các kết nối peer-to-peer. Điều này cho phép các trình duyệt web không chỉ yêu cầu tài nguyên từ các máy chủ mà còn truyền thông tin thời gian thực với trình duyệt khác.
Về bản chất, WebRTC là tập hợp các tiêu chuẩn và giao thức cho phép các trình duyệt Web thực hiện trực tiếp các tính năng truyền thông đa phương tiện thời gian thực như gọi điện, truyền hình, truyền dữ liệu, gửi tin nhắn bằng các APIs JavaScripts. Quá trình phát triển WebRTC được bắt đầu từ Google nhằm xây dựng một chuẩn dựa trên máy phương tiện thời gian thực (Real time Media Engine) trong tất cả các trình duyệt. Ý tưởng này được đưa ra bởi nhóm phát triển Google Hangouts từ năm 2009. Sau khi mua lại công ty Global IP Solutions (GIPS) năm 2010 (Công ty hỗ trợ những ứng dụng điện thoại trên nền PC cho các Công ty lớn như Nortel(Avaya), Webex(Cisco), Yahoo, IBM…) và Công ty On2 năm 2011 (Công ty tạo ra chuẩn video codec VP8), Google đã phát hành WebRTC như là dự án mã nguồn mở dựa trên các công nghệ đạt được của GIPS và On2, chứa những thành phần nền tảng cho việc truyền thông chất lượng cao trên môi trường Web.
Những thành phần này khi được thực hiện trong trình duyệt, có thể được truy cập qua các JavaScripts APIs, cho phép những nhà lập trình xây dựng những ứng dụng web đa phương tiện. Những công ty hỗ trợ phát triển WebRTC tích cực nhất gồm có Google, Mozilla, Opera. Sự phát triển của WebRTC qua các năm gần đây trên các trình duyệt thể hiện ở các mốc thời gian: 27/10/2011: Bản dự thảo WebRTC đầu tiên được W3C công bố. Tháng 11/2011, WebRTC được hỗ trợ một phần trên Chrome 23 (chưa hỗ trợ Data Channel API) Tháng 1/2013: WebRTC được hỗ trợ một phần trên Firefox 20 (hỗ trợ API GetUserMedia - API cho phép truy cập media trên máy).
Tháng 6/2013: Firefox 22 phát hành, hỗ trợ khả năng tạo cuộc gọi video cũng như sử dụng Data Channel API. Tháng 7/2013: Phiên bản beta của Chrome 29 trên Android hỗ trợ WebRTC. Tháng 8/2013: Chrome 29 trên Android hỗ trợ đầy đủ WebRTC. Tháng 10/2013: Phiên bản beta Opera 18 giới thiệu hỗ trợ WebRTC.
Tháng 3/2014: Phiên bản Opera 20 cho Android hỗ trợ WebRTC.0 working draft chính thức được công bố, đến nay đã được hỗ trợ bởi các trình duyệt Chrome (version 23 trở lên), Firefox (version 22 trở lên), Opera (version 18 trở lên) và được hỗ trợ trình duyệt trên 12 nền tảng Android (Chrome 29 trở lên, Firefox 24 trở lên, Opera Mobile 12 trở lên, Google Chrome OS). Tuy chưa được Microsoft, Apple tuyên bố hỗ trợ nhưng WebRTC vẫn tiếp tục được nghiên cứu mở rộng và hoàn thiện, bản cập nhật mới nhất được thực hiện vào 16/09/2016. WebRTC được phát triển dưới sự phối hợp chặt chẽ của tổ chức W3C và Internet Engineering Task Force – Lực lượng quản lý kỹ thuật mạng Internet (IETF). Tổ chức W3C, chủ yếu là nhóm Web Real-Time Communications Working Group, có nhiệm vụ định nghĩa các APIs phía client (client-side) để cho phép truyền thông thời gian thực trên trình duyệt Web.
Những APIs giúp xây dựng ứng dụng chạy trong trình duyệt, không yêu cầu thêm download hay cài đặt plugin, cho phép truyền thông giữa các bên sử dụng audio, video theo thời gian thực không qua các máy chủ trung gian (trừ một số trường hợp cần thiết khi vượt NAT [11], tường lửa. Tổ chức IETF, chủ yếu là nhóm RTC in WEB-Browser Working Group, có nhiệm vụ định nghĩa các giao thức, định dạng dữ liệu, bảo mật … sử dụng trong WebRTC để thiết lập, điều khiển, quản lý việc truyền thông giữa trình duyệt. Trước khi WebRTC xuất hiện, khi muốn xây dựng một ứng dụng web đa phương tiện đa nền tảng, người ta thường sử dụng Flash, Java Applet và tích hợp plugins các nhà cung cấp thứ ba để thực hiện. Giải pháp như vậy được coi là “nặng” và khó triển khai cũng như hỗ trợ về sau.
Điều này thúc giục việc nghiên cứu giải pháp đơn giản, hiệu quả hơn cho các ứng dụng đa phương tiện, đặc biệt trên cơ sở người dùng hiện nay có thể truy cập được Internet mọi lúc mọi nơi. WebRTC ra đời để giải quyết vấn đề này, khi nó được tích hợp với các Voice Engine, Video Engine tốt nhất và được triển khai trên hàng triệu thiết bị đầu cuối hàng năm. Những lợi ích của WebRTC: Giảm giá thành: chi phí triển khai và hỗ trợ IT thấp vì không cần cài đặt phần mềm client đặc biệt nào phía client. Không Plugins: trước đây phải sử dụng Flash, Java Applets và các giải pháp khác để xây dựng ứng dụng web tương tác đa phương tiện, phải download và cài đặt các plugin của bên thứ ba để có thể sử dụng nội dung đa phương tiện, ngoài ra còn phải lưu ý đến những giải pháp/plugin cho các hệ điều hành và nền tảng (platform) khác nhau.
Với WebRTC thì không cần quan tâm đến vấn đề này nữa. Truyền thông P2P: trong đa phần các trường hợp, truyền thông được thiết lập trực tiếp giữa trình duyệt, không cần có những điểm trung gian. Dễ sử dụng: có thể dễ dàng tích hợp tính năng WebRTC trong dịch vụ web/trang web bằng cách sử dụng JavaScript APIs, những framework đã có sẵn. 13 Một giải pháp cho mọi nền tảng: không cần phát triển những phiên bản dịch vụ web cho những nền tảng khác nhau (Windows, Android, IOS…) Mã mở và miễn phí: WebRTC được Google đưa thành dự án mã nguồn mở, và được hỗ trợ bởi những công ty quốc tế như Mozilla, Google và Opera, thêm cộng đồng trên thế giới có thể phát hiện những lỗi mới và giải quyết nhanh chóng hoàn toàn miễn phí [3] Built-in security: WebRTC quy định mọi dữ liệu truyền P2P đều được bảo mật và mã hóa.
Một số tính năng mới quan trọng được lược tả ở bảng sau: Bảng 2.1: Những tính năng mới của WebRTC (tổng hợp theo [1]) Tính năng Cách thức cung cấp Lý do quan trọng Độc lập với Platform Sử dụng các APIs chuẩn từ Nhà phát triển có thể viết mã và thiết bị W3C, các giao thức từ WebRTC HTML5 có thể chạy trên IETF các hệ điều hành, trình duyệt, thiết bị desktop và mobile khác nhau Bảo mật voice và Sử dụng Secure RTP Đảm bảo trình duyệt khi được sử video Protocol cho mã hóa và xác dụng ở các môi trường khác nhau thực. Mã hóa giúp người khác ko thể nghe hay ghi lại voice, video Chất lượng voice, Sử dụng Codec Opus cho Có chuẩn built-in codecs đảm bảo video cao audio, VP8 cho video khả năng tương tác và tránh việc phải download codecs, tiềm ẩn nguy cơ bị cài đặt spyware, virus từ các trang web giả mạo. Thiết lập phiên tin Sử dụng kỹ thuật Hole Truyền media trực tiếp giữa trình cậy punching[20] để vượt NAT duyệt giúp tin cậy hơn, cho chất lượng tốt hơn là phải relay qua máy chủ. Ngoài ra cũng giúp máy chủ giảm được tải xử lý.
Cho phép nhiều dòng Sử dụng Real-time Thiết lập kênh truyền media trực (stream) và loại Transport Protocol (RTP) tiếp sử dụng hole punching tuy mất media gửi qua một và Session Description thêm thời gian nhưng việc gửi tất cả địa chỉ transport Protocol (SDP) extensions media qua một phiên đơn giúp hiệu (single transport) quả và tin cậy hơn Thích ứng với điều Sử dụng Multiplexed RTP Cơ chế phản hồi theo điều kiện của kiện của mạng Control Protocol, Secure mạng là cần thiết với video, đặc biệt Audio Video Profile with quan trọng với phiên WebRTC có Feedback (SAVPF) [29] độ nét cao 14 Hỗ trợ nhiều loại Sử dụng APIs và báo hiệu Khả năng thống nhất mỗi nguồn media và nhiều để thống nhất size/format media riêng biệt giúp tối ưu sử dụng nguồn của media của mỗi nguồn media riêng băng thông và những tài nguyên biệt khác. Khả năng tương tác Sử dụng Secure Real-time Những hệ thốngVoIP, Video đang với hệ thống VoIP và Transport Protocol (SRTP) tồn tại có thể kết nối với hệ thống hệ thống truyền và Secure Real-time WebRTC sử dụng những giao thức thông video sử dụng Control Transport Protocol chuẩn. SIP, Jingle và PSTN (SRCTP) [17] 2. Kiến trúc WebRTC Kiến trúc web cổ điển dựa trên mô hình client-server, trong đó trình duyệt gửi yêu cầu HTTP đến máy chủ để lấy nội dung, máy chủ trả lời, gửi nội dung về cho trình duyệt dưới dạng HTML, thường kèm theo JavaScript và Cascading Style Sheets (CSS).
Trong trường hợp đơn giản thì khi máy chủ web trả lời yêu cầu từ client bằng thông tin text, hình ảnh hay thông tin khác như client mong muốn. Trong trường hợp phức tạp hơn, máy chủ gửi JavaScript để chạy ở phía trình duyệt, tương tác với với trình duyệt qua các JavaScript APIs chuẩn và tương tác với người dùng qua thao tác lựa chọn, click…trên giao diện người dùng. Trình duyệt trao đổi thông tin với máy chủ bằng giao thức HTTP trên TCP hoặc WebSockets trên TCP Hình 2.1: Kiến trúc ứng dụng Web cổ điển WebRTC mở rộng ngữ nghĩa client-server bởi mô hình truyền thông Peer-to-Peer giữa các trình duyệt, thêm máy chủ báo hiệu và thành phần chức năng truyền thông thời gian thực (Real Time Communication hay RTC) của trình duyệt. Ứng dụng với WebRTC (thường viết bằng HTML5 và JavaScript) tương tác với trình duyệt qua những WebRTC APIs đang được chuẩn hóa, cho phép nó khai thác hợp lý và điều khiển chức 15 năng thời gian thực của trình duyệt.
Ứng dụng web với WebRTC cũng tương tác với trình duyệt sử dụng cả những APIs chuẩn hóa khác một cách chủ động (như truy vấn khả năng trình duyệt) hoặc bị động (như tiếp nhận thông báo khởi tạo bởi trình duyệt).