1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu giao tiếp thời gian thực trên web WebRTC và ứng dụng xây dựng hệ thống webchat thời gian thực

60 1,3K 9

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 60
Dung lượng 4,68 MB

Nội dung

WebRTC mang lại hỗ trợ giao tiếp thời gian thực từ ngay bên trong các trình duyệt web và các nhà phát triển web có thể sử dụng một cách tự do thông qua các JavaScript API tiêu chuẩn.. Dự

Trang 1

1

LỜI CAM ĐOAN

Tôi xin cam đoan rằng đây là công trình nghiên cứu của riêng tôi Các số liệu và kết quả nghiên cứu trong luận văn này là trung thực vàkhông sao chép của bất kỳ ai Các thông tin trích dẫn trong luận văn đã đƣợc chỉ rõ nguồn gốc

Hà Nội, ngày tháng năm 2014

Học viên

Khúc Ngọc Hiệp

Trang 2

2

TÓM TẮT

WebRTC là một nỗ lực để xây dựng một framework mở có khả năng giao tiếp audio và video thời gian thực, nó có thể biến các trình duyệt web thành một nền tảng cho giao tiếp giữa người với người Giao tiếp thời gian thực trong trình duyệt web đã

có trước đây tuy nhiênchúng ta phải cài đặt phần mềm của bên thứ ba lên trình duyệt web WebRTC mang lại hỗ trợ giao tiếp thời gian thực từ ngay bên trong các trình duyệt web và các nhà phát triển web có thể sử dụng một cách tự do thông qua các JavaScript API tiêu chuẩn Điều này mang lại giao tiếp thời gian thực như là một tính năng cho web, có thể thúc đẩy sự đổi mới hơn nữa

Luận văn này nghiên cứu chuyên sâu về WebRTC, các kiến trúc và mô hình trong WebRTC, các giao thức và kỹ thuật được sử dụng trong WebRTC, các API của WebRTC và các vấn đề về bảo mật và tính riêng tư được giải quyết trong WebRTC Dựa trên kết quả nghiên cứu về lý thuyết cho WebRTC và hiện trạng của hệ thống

hỗ trợ khách hàng trực tuyến của các website thương mại điện tử ở Việt Nam phải sử dụng các ứng dụng chat bên ngoài như Yahoo messenger và Skype, chúng tôi đã tiến hành xây dựng một ứng dụng web chat thời gian thực sử dụng WebRTC để cải tiến hệ thống hỗ trợ khách hàng này Khách hàng sẽ không phải cài đặt thêm một ứng dụng hoặc plugin nào để có thể chat video, gửi tin nhắn và gửi file với nhân viên hỗ trợ khách hàng ngay trên trình duyệt web

Chúng tôi thấy rằng WebRTC là một công nghệ rất khả thi, và rất thích hợp cho trường hợp giao tiếp một một từ trình duyệt đến trình duyệt Mặc dù chúng tôi phát hiện ra một số thách thức chưa được giải quyết, chúng tôi không thấy bất kỳ trở ngại không thể vượt qua nào sẽ ngăn cản việc chấp nhận WebRTC WebRTC mở ra những

cơ hội cho các công ty sẽ sử dụng nó trực tiếp để cung cấp một dịch vụ giao tiếp thời gian thực trên web, nó cũng tạo ra không gian cho các nhà cung cấp PaaS WebRTC trên thị trường Thêm vào đó, WebRTC cho phép kết nối với các hệ thống cũ như PSTN hay PLMN, mở ra cơ hội cho các nhà cung cấp viễn thông để khám phá tạo ra cách thức truyền thông mới cho khách hàng của họ

Trang 3

3

MỤC LỤC

LỜI CAM ĐOAN 1

TÓM TẮT 2

MỤC LỤC 3

DANH SÁCH HÌNH VẼ 5

DANH SÁCH BẢNG 5

BẢNG TỪ VIẾT TẮT 6

MỞ ĐẦU 7

CHƯƠNG 1: GIỚI THIỆU VỀ TRUYỀN THÔNG WEB THỜI GIAN THỰC - WEBRTC 9

1.1 Ngắn gọn về lịch sử của WebRTC 9

1.2 Kiến trúc của WebRTC 10

1.3 Chồng giao thức trong WebRTC 13

1.4 Các API của WebRTC 19

1.5 Kênh báo hiệu trong WebRTC 20

1.6 Bảo mật trong WebRTC 21

CHƯƠNG 2: GIỚI THIỆU VỀ EASYRTC FRAMEWORK 23

2.1 Giới thiệu về EasyRTC framework 23

2.2 Cài đặt và chạy máy chủ EasyRTC 24

2.3 Sử dụng EasyRTC 26

2.4 Một số API tiện ích khác của EasyRTC 30

CHƯƠNG 3: SỬ DỤNG EASYRTC FRAMEWORK ĐỂ XÂY DỰNG ỨNG DỤNG WEB CHAT THỜI GIAN THỰC 33

3.1 Phân tích hệ thống 33

3.1.1 Mục tiêu tổng thể của ứng dụng web chat thời gian thực 33

3.1.2 Thực trạng của hệ thống tư vấn bán hàng trực tuyến 33

3.1.3 Phân tích yêu cầu của ứng dụng 39

3.2 Thiết kế ứng dụng 39

3.2.1 Biểu đồ trường hợp sử dụng 39

3.2.2 Biểu đồ tuần tự 43

3.2.3 Biểu đồ lớp 45

3.2.4 Thiết kế giao diện 46

3.3 Thực hiện ứng dụng 47

Trang 4

4

3.4 Chạy thử và đánh giá ứng dụng 50

3.4.1 Chạy thử ứng dụng 51

3.4.2 Đánh giá ứng dụng 57

KẾT LUẬN 58

TÀI LIỆU THAM KHẢO 59

Trang 5

5

DANH SÁCH HÌNH VẼ

Hình 1: Kiến trúc tổng thể của WebRTC [3] 11

Hình 2: Kiến trúc bên trong của WebRTC [8] 12

Hình 3: Chồng giao thức trong WebRTC [1] 14

Hình 4: Kênh báo hiệu trong WebRTC 21

Hình 5: Góc hỗ trợ khách hàng trực tuyến trên website trananh.vn 34

Hình 6: Góc hỗ trợ khách hàng trực tuyến trên website mediamart.vn 34

Hình 7: Góc hỗ trợ khách hàng trực tuyến trên website nama.vn 35

Hình 8: Lựa chọn hỗ trợ thông qua Skype trên website trananh.vn 36

Hình 9: Trình duyệt yêu cầu khách hàng cho phép bật ứng dụng Skype trên máy tính 36

Hình 10: Màn hình đăng nhập Skype trên máy tính 37

Hình 11: Màn hình đăng nhập Skype trên máy tính - tiếp 37

Hình 12: Bắt đầu chat với nhân viên hỗ trợ khách hàng 38

Hình 13: Biểu đồ trường hợp sử dụng 40

Hình 14: Biểu đồ tuần tự 45

Hình 15: Biểu đồ lớp 46

Hình 16: Thiết kế wireframe cho ứng dụng web chat 47

Hình 17: Nhân viên mở trang hỗ trợ khách hàng bên trong phần quản trị của website 51

Hình 18: Nhân viên hỗ trợ khách hàng đăng nhập vào phòng hỗ trợ mà họ chịu trách nhiệm 52

Hình 19: Khách hàng xem sản phẩm và tìm đến góc hỗ trợ khách hàng 52

Hình 20: Khách hàng lựa chọn Gọi nhân viên hỗ trợ "Kinh doanh điện thoại" 53 Hình 21: Khách hàng lựa chọn kết nối với nhân viên hỗ trợ sau khi đã đăng nhập 53

Hình 22: Trình duyệt yêu cầu quyền truy cập tới máy ảnh và microphone 54

Hình 23: Nhân viên hỗ trợ nhận được yêu cầu kết nối từ khách hàng và đồng ý kết nối 54

Hình 24: Nhân viên hỗ trợ và khách hàng nói chuyện, chia sẻ webcam và gửi tin nhắn với nhau 55

Hình 25: Gửi file khi đang nói chuyện 55

Hình 26: Nhận file và lưu lại trên máy tính 56

Hình 27: Ứng dụng chạy trên điện thoại Android với trình duyệt Chrome cho Android 56

DANH SÁCH BẢNG Bảng 1: Bảng mô tả các trường hợp sử dụng 43

Trang 6

6

BẢNG TỪ VIẾT TẮT

STUN Session Traversal Utilities for NAT

Trang 7

7

MỞ ĐẦU

World Wide Web (WWW hay Web) là hệ thống được biết đến rộng rãi nhất được truy cập qua Internet Hơn nữa, đối với đa số người sử dụng Internet, từ "Internet" là tương đương với Web Đối với họ, Internet là những gì bạn truy cập được thông qua trình duyệt web Hai yếu tố này liên kết với nhau hơn nữa tại vì sự phát triển các tính năng và dịch vụ web cung cấp có tác động đến các phần khác của hệ sinh thái Internet,

ví dụ các hệ thống khác, các nhà cung cấp dịch vụ, doanh nghiệp và người sử dụng Vì

lý do đó, sự phát triển của web là một thành phần quan trọng trong sự phát triển của bản thân Internet

Ban đầu các trang web, cũng như các trình duyệt web - giao diện để truy cập web - chỉ có dạng văn bản đơn giản Sau đó, một trong những cột mốc quan trọng đầu tiên trong sự phát triển của web là sự ra đời của trình duyệt web Mosaic, trong đó có một giao diện người dùng hiển thị cả đồ họa và văn bản, nó trở thành phổ biến trong các tài liệu trên web Sau đó, sự phát triển trong các trình duyệt web hiện đại và các công nghệ hỗ trợ đã mang các nội dung đa phương tiện đưa lên web Video và audio, hình ảnh tĩnh và hình ảnh động cùng được sử dụng trong các trang web tương tác, đã trở thành một chuẩn mực

Tuy nhiên, nội dung đa phương tiện chủ yếu là chỉ là nội dung tĩnh được sản xuất trước đó và phát hành, sau đó được gửi lên web để đến với mục tiêu người nhận Web, mặt khác, ngày càng trở nên một nền tảng cho truyền thông, thúc đẩy bởi sự gia tăng của các mạng xã hội, một địa điểm nơi con người có thể thể hiện bản thân và chia sẻ với bạn bè, gia đình các mảnh khác nhau trong cuộc sống của họ Bất cứ khi nào khi thông tin liên lạc thời gian thực là cần thiết, nếu không nhờ đến sự trợ giúp của phần mềm bổ sung khác, các trang web chỉ có thể cung cấp tin nhắn tức thời dựa trên văn bản

Giao tiếp web thời gian thực (Web Real-Time Communications - WebRTC), là một

nỗ lực để loại bỏ hạn chế này của web được điều hành bởi một số nhà cung cấp trình duyệt chính (Google, Mozilla, Microsoft, Opera) và các công ty nổi tiếng khác (Cisco, Ericsson, vv) WebRTC là một framework mở có khả năng giao tiếp audio và video thời gian thực, nó biến các trình duyệt web thành một nền tảng truy cập chung để giao tiếp giữa người với người Trong khi hội thoại và video thời gian thực không phải là mới với Internet, cho đến nay nó chỉ sử dụng được trong trình duyệt web bằng cách cài

Trang 8

8

đặt thêm phần mềm của bên thứ ba, chẳng hạn như Adobe Flash [15] hoặc Skype

plug-in WebRTC mang lại hỗ trợ cho giao tiếp thời gian thực cho các trình duyệt web và giúp các nhà phát triển web sử dụng một cách tự do thông qua Javascript API được tiêu chuẩn hóa

Cấu trúc của luận văn:

Ngoài phần tóm tắt, kết luận và phụ lục Luận văn được chia thành ba chương như sau:

 Chương 1: Tổng quan lý thuyết Chương này được dành để nói về kiến trúc của WebRTC và các kỹ thuật được sử dụng trong nền tảng này

 Chương 2: Tìm hiểu về EasyRTC framework Chương này chúng tôi tìm hiểu về một framework được xây dựng trên nền WebRTC để hỗ trợ các nhà phát triển trong việc xây dựng các ứng dụng có sử dụng WebRTC

 Chương 3: Sử dụng EasyRTC framework để xây dựng ứng dụng web chat thời gian thực Chương này chúng tôi sẽ đi vào xây dựng một hệ thống web chat thời gian thực sử dụng WebRTC để hỗ trợ cho hệ thống hỗ trợ khách hàng trực tuyến của các website thương mại điện tử

Trang 9

9

CHƯƠNG 1: GIỚI THIỆU VỀ TRUYỀN THÔNG WEB THỜI GIAN

THỰC - WEBRTC

Hãy tưởng tượng một thế giới nơi mà điện thoại, TV và máy tính của chúng ta đều

có thể giao tiếp trên cùng một nền tảng chung Hãy tưởng tượng rằng chúng ta có thể

dễ dàng thêm vào tính năng video chat và chia sẻ dữ liệu peer-to-peer cho ứng dụng web Đó là tầm nhìn của WebRTC

Trước đây khi chưa có công nghệ WebRTC, chúng ta vẫn có thể thực hiện các cuộc gọi video, audio và chat trên trình duyệt, tuy nhiên nó đòi hỏi phải cài đặt thêm các plugin cho trình duyệt, và thậm chí cả hai người thực hiện cuộc gọi cùng phải cài đặt một loại plugin Và nếu người sử dụng chuyển sang một máy tính khác hoặc sử dụng một trình duyệt web khác, thì lại phải cài đặt lại plugin để có thể thực hiện cuộc gọi được Việc sử dụng plugin thường hay gặp phải các vấn đề về bảo mật và gây khó khăn cho người sử dụng

Hiện tại, WebRTC là công nghệ duy nhất cho phép truyền thông thời gian thực trong trình duyệt web mà không cần cài đặt thêm bất cứ một plugin hoặc ứng dụng nào khác

WebRTC là một nỗ lực của ngành công nghiệp để đưa khả năng truyền thông thời gian thực vào tất cả các trình duyệt web, cho phép các nhà phát triển web dễ dàng sử dụng các tính năng này thông qua các thẻ HTML5 tiêu chuẩn và các JavaScript API

Ví dụ, thực hiện một ứng dụng web có các tính năng tương tự như các tính năng Skype™ cung cấp mà không cần phải cài đặt thêm bất kỳ phần mềm hay plug-in nào của bên thứ ba [1]

1.1 Ngắn gọn về lịch sử của WebRTC

Một trong những thách thức lớn nhất cho các trang web là cho phép con người giao tiếp thông qua giọng nói và video: giao tiếp thời gian thực hay RTC - Real Time Communication

Trong lịch sử, RTC đã được thực hiện một cách rất phức tạp, đòi hỏi các giấy phép công nghệ audio và video rất tốn kém hoặc các công nghệ tự phát triển riêng Việc tích hợp công nghệ RTC với các nội dung, dữ liệu và các dịch vụ hiện có rất khó khăn và tốn nhiều thời gian, đặc biệt là trên web

Trang 10

10

Gmail video chat trở nên phổ biến trong năm 2008, và vào năm 2011 Google đã giới thiệu Hangouts, nó sử dụng dịch vụ Google Talk (cũng giống như trong Gmail) Google mua lại GIPS, một công ty đã phát triển nhiều thành phần cần thiết cho RTC, chẳng hạn như các bộ codec và các kỹ thuật triệt tiếng dội Google mở mã nguồn các công nghệ được phát triển bởi GIPS và tham gia vào các tiêu chuẩn có liên quan tại tổ chức IETF và W3C để đảm bảo sự đồng thuậncủa ngành công nghiệp [19]

WebRTC hiện nay đã thực hiện các tiêu chuẩn mở cho thời gian thực, không cần plugin chotruyền thông video, audio và dữ liệu Nhu cầu sử dụng WebRTC là có thật:

 Nhiều dịch vụ web đã sử dụng RTC, nhưng cần phải tải về thêm các ứng dụng hoặc plugin Trong đó bao gồm Skype, Facebook (trong đó sử dụng Skype) và Google Hangouts (sử dụng plugin Google Talk)

 Tải, cài đặt và cập nhật các plugin có thể phức tạp, dễ bị lỗi và gây phiền nhiễu

 Các plugin có thể khó khăn để triển khai, gỡ lỗi, khắc phục sự cố, kiểm thử

và bảo trì và nó có thể yêu cầu giấy phép và tích hợp với các công nghệ phức tạp đắt tiền Thường thì rất khó để thuyết phục mọi người cài đặt plugin ngay

từ đầu

Các nguyên tắc dẫn đường của dự án WebRTC là các API của nó phảilà mã nguồn

mở, miễn phí, được tiêu chuẩn hóa, được xây dựng trong các trình duyệt web và phải hiệu quả hơn so với các công nghệ hiện có

WebRTC hiện tại vẫn chưa hoàn thiện, nó vẫn đang tiếp tục được xây dựng, cả ở cấp độ API của trình duyệt và ở cấp độ giao thức Tuy nhiên, một số trình duyệt web

đã hỗ trợ hầu hết các API của WebRTC như các trình duyệt Google Chrome, Opera và Mozilla Firefox mới nhất [8]

1.2 Kiến trúc của WebRTC

Cho phép truyền thông thời gian thực trong trình duyệt là một cam kết đầy tham vọng, và có lẽ là một trong những bổ sung quan trọng nhất cho nền tảng web từ khi được hình thành cho đến nay Với kết quả là kiến trúc WebRTC bao gồm rất nhiều tiêu chuẩn, giao thức và API mới để cho nó hoạt động:

 Tổ chức W3C chịu trách nhiệm định nghĩa các APIs mới của WebRTC cho trình duyệt [2]

Trang 11

11

 Tổ chức IETF chịu trách nhiệm định nghĩa các giao thức, định dạng dữ liệu, bảo mật và các khía cạnh cần thiết khác để cho phép truyền thông peer-to-peer trong trình duyệt [2]

Hình 1 dưới đây mô tả kiến trúc tổng thể của WebRTC.Khối màu nhạt hơn gọi là

"chức năng truyền thông thời gian thực của trình duyệt" Chức năng nàytương tác với các ứng dụng web sử dụng các API tiêu chuẩn của WebRTC và nó giao tiếp với hệ điều hành thông qua trình duyệt

JavaScript/HTML/CSS

Trình duyệt

Web

Chức năng RTC

HTTP hoặc

Các API RTC Các API khác

Các dịch vụ của hệ điều hành

Giao thức trên dây (cho truyền media hoặc dữ liệu)Máy chủ Web Máy chủ báo hiệu

Hình 1: Kiến trúc tổng thể của WebRTC [3]

Một khía cạnh mới của WebRTC là sự tương tác xảy ra giữa trình duyệt với trình duyệt, được biết đến như một kết nối peer-to-peer, nơi mà chức năng RTC trong một trình duyệt giao tiếp sử dụng các giao thức tiêu chuẩn trên dây (không phải HTTP) với chức năng RTC trong một trình duyệt khác Trong khi truyền thôngtrên web sử dụng

Trang 12

1 Các nhà phát triển trình duyệt web (nhƣ Google Chrome hoặc Mozilla Firefox)

sẽ quan tâm đến các WebRTC C ++ API cho kết nối peer-to-peervà các API cho audio, video và vào/ra mạng theo ý của họ

2 Các nhà phát triển ứng dụng web sẽ quan tâm đến các web API

WebRTC JavaScript API (Soạn thảo bởi W3C)

Voice Engine

VP8 Codec

Bộ đệm Video jitter Tăng cường ảnh

Video Capture

Video Engine

SRTP Dồn kênh P2P STUN + TURN +ICE Network I/O

API viết chồng lên được cho các nhà phát triển trình duyệt Web

Trình duyệt Web

Hình 2: Kiến trúc bên trong của WebRTC [8]

Ứng dụng web: là ứng dụng viết trên nền web sử dụng các JavaScript API của WebRTCcho chức năng truyền thông thời gian thực nhƣ chia sẻ video, audio chat, chia

sẻ file

WebRTC JavaScript API: là các API đƣợc xây dựng bởi các nhà phát triển trình duyệt web theo tiêu chuẩn đƣợc quy định bởi tổ chức W3C Các API này đƣợc các nhà

Trang 13

Khối giao vận: đảm nhiệm việc thiết lập kết nối qua các mô hình mạng khác nhau

sử dụng STUN, TURN và ICE, đồng thời thực hiện việc dồn kênh và thực hiện chức năng truyền thông thời gian thực

VideoEngine: là một framework xử lý chuỗi khung hình video, từ máy ảnh vào mạng, và từ mạng tới màn hình hiển thị.VideoEngine trong WebRTC sử dụng VP8 video codec, đây là một định dạng video mở, chất lượng cao và miễn phí cho nền tảng web được phát triển từ dự án WebM - http://www.webmproject.org/ VideoEngine cũng sử dụng bộ đệm jitter động cho video, nó giúp che giấu những ảnh hưởng của hiện tượng jitter và mất gói tin đến chất lượng hình ảnh tổng thể Ngoài ra Video Engine còn có bộ tăng cường ảnh, giúp loại bỏ nhiễu cho các hình ảnh thu được từ webcam

Voice Engine: là một framework xử lý chuỗi âm thanh từ card âm thanh vào mạng

Nó sử dụng iSAC, iLBC và Opus audio codec và sử dụng bộ đệm jitter động để che giấu những tác động của hiện tượng jitter và việc mất gói tin, trong khi giữ độ trễ thấp nhất có thể và duy trì chất lượng âm thanh cao nhất Voice Engine cũng sử dụng bộ khử tiếng vọng và bộ giảm tiếng ồn để nâng cao chất lượng đàm thoại

1.3 Chồng giao thức trong WebRTC

Hình 3 thể hiện các giao thức được sử dụng trong WebRTC

Trang 14

TURN STUN ICE

Hình 3: Chồng giao thức trong WebRTC [1]

a) Giao thức HTTP

WebRTC sử dụng giao thức HTTP - Hyper-Text Transport Protocol giống như bất

kỳ ứng dụng web nào, vì vậy không cần một kiến thức đặc biệt nào về HTTP Phiên bản hiện tại của HTTP là 1.1 IETF đang làm việc để định nghĩa phiên bản tiếp theo của HTTP, được gọi là 2.0 Giao thức này sẽ có khả năng tăng tốc độ và hiệu quả tải web và các ứng dụng WebRTC sẽ có thể sử dụng giao thức này và bất kỳ phiên bản khác trong tương lai của HTTP

b) Giao thức WebSocket

WebSocket là một giao thức cung cấp các kênh truyền thông song công hoàn toàn thông qua một kết nối TCP duy nhất [11].WebSocket làm cho giao tiếp thời gian thực hiệu quả hơn vì nó giảm thiểu độ trễ để gửi/nhận thông báo giữa hai phía của kết nối [12].WebRTC sử dụng WebSocket để trao đổi thông báo giữa các trình duyệt với nhau

và giữa các trình duyệt với máy chủ web để thiết lập, duy trì và ngắt kết nối

c) RTP và SRTP

Giao thức quan trọng nhất được sử dụng bởi WebRTC là RTP - Real-time Transport Protocol WebRTC chỉ sử dụng phiên bản an toàn của RTP gọi là SRTP - Secure RTP [10] SRTP là giao thức được sử dụng để vận chuyển và mang các gói tin audio và video media giữa các WebRTC client Các gói tin media chứa các audio hoặc các khung hình video được số hóa được tạo ra bởi một microphone hoặc máy ảnh hoặc

Trang 15

15

ứng dụng, và được dựng lại bởi loa hoặc màn hình hiển thị Một thiết lập thành công một kết nối peer, cùng với việc hoàn thành trao đổi một cặp offer/answer sẽ dẫn đến một kết nối SRTP được thiết lập giữa các trình duyệt hoặc một trình duyệt và một máy chủ, và trao đổi thông tin media

SRTP cung cấp thông tin cần thiết để vận chuyển thành công và dựng hình thông tin media: các codec (coder/decoder được sử dụng để lấy mẫu và nén audio hoặc video), nguồn của các media (nguồn đồng bộ hóa hoặc SSRC), một dấu thời gian, số thứ tự (để phát hiện mất các gói dữ liệu), và các thông tin khác cần thiết để phát lại Đối với

dữ liệu không phải là audio hoặc video, SRTP không được sử dụng Thay vào đó, một cuộc gọi đến API RTCDataChannel sẽ dẫn đến một kênh dữ liệu được mở ra giữa các trình duyệt cho phép bất kỳ định dạng dữ liệu được trao đổi

d) SDP

Mô tả phiên WebRTC được mô tả bằng cách sử dụng SDP - Session Description Protocol Một mô tả phiên SDP (mã hóa như là một đối tượng RTCSessionDescription) được sử dụng để mô tả các đặc điểm media của kết nối peer [9] Có một danh sách dài và phức tạp của thông tin cần phải được trao đổi giữa hai đầu của phiên SRTP để chúng có thể giao tiếp Lời gọi API đến RTCPeerConnection

sẽ cho kết quả là một mô tả phiên SDP, một tập định dạng dữ liệu theo cách đặc biệt, được tạo ra bởi các trình duyệt và truy cập bằng cách sử dụng JavaScript bởi các ứng dụng web Một ứng dụng muốn có kiểm soát media chặt chẽ hơn có thể thay đổi các

mô tả phiên trước khi chia sẻ nó với trình duyệt khác Khi các thay đổi được thực hiện cho một kết nối peer, điều này sẽ dẫn đến thay đổi mô tả phiên mà hai bên sẽ trao đổi Điều này được gọi là một trao đổi offer/answer Bất kỳ nhà phát triển nào có nhu cầu kiểm soát các phiên media chi tiết hơn cần phải hiểu về SDP

Cả SRTP và SDP là hai giao thức được chuẩn hóa bởi IETF và được sử dụng rộng rãi bởi các thiết bị và dịch vụ truyền thông trên Internet, chẳng hạn như điện thoại VoIP, cácgateways, hội nghị truyền hình và các thiết bị hợp tác khác Kết quả là, thông tin liên lạc giữa một trong những thiết bị và một WebRTC client là có thể được Tuy nhiên, rất ít các thiết bị VoIP hoặc video hiện nay hỗ trợ đầy đủ các khả năng và các giao thức của WebRTC Các thiết bị này sẽ cần phải được nâng cấp để hỗ trợ các giao thức mới, hoặc một chức năng gatewayđược sử dụng giữa WebRTC client và VoIP hoặc video client để làm việc chuyển đổi

Trang 16

16

e) STUN

STUN - Session Traversal Utilities for NAT - là một giao thức được sử dụng để giúp đi qua NAT Trong WebRTC, một STUN client được xây dựng sẵn trong user agent của trình duyệt, và các máy chủ web sẽ chạy một máy chủ STUN Gói tin kiểm tra STUN được gửi trước khi thiết lập phiên để cho phép trình duyệt biết nếu nó đang

ở đằng sau một NAT và để khám phá các địa chỉ ánh xạ và cổng của nó Thông tin này sau đó được sử dụng để xây dựng các địa chỉ ứng cử viên trong kỹ thuật ICE "hole punching" STUN có thể được vận chuyển qua UDP, TCP, hoặc TLS [1]

f) TURN

TURN - Traversal Using Relays around NAT - là một mở rộng của giao thức STUN, nó cung cấp một chuyển tiếp media cho các trường hợp mà ICE "hole punching" thất bại Trong WebRTC, các user agent trong trình duyệt sẽ bao gồm một TURN client, và một máy chủ web sẽ cung cấp một máy chủ TURN Trình duyệt yêu cầu một địa chỉ IP công cộng và số cổng như một địa chỉ chuyển tiếp vận chuyển từ máy chủ TURN Địa chỉ này sau đó được bao gồm như là một địa chỉ ứng cử viên trong ICE "hole punching" TURN cũng có thể được sử dụng để đi qua tường lửa [1] TURN có thể được sử dụng để thiết lập địa chỉ vận chuyển chuyển tiếp sử dụng UDP, TCP, hoặc TLS Tuy nhiên, thông tin liên lạc giữa các máy chủ TURN và TURN client (thông qua NAT) luôn luôn là UDP

g) ICE

ICE - Interactive Communication Establishment - là một giao thức được tiêu chuẩn hóa bởi IETF (RFC- 5245) [17] Giao thức ICE được dùng để thiết lập phiên media dựa trên UDP đi qua NAT

ICE cố gắng tìm ra con đường tốt nhất để kết nối giữa các peer, nó thử tất cả các khả năng có thể kết nối một cách song song và lựa chọn một con đườngkết nối hiệu quả nhất ICE đầu tiên cố gắng để tạo ra một kết nối bằng cách sử dụng địa chỉ thu được từ hệ điều hành và card mạng của thiết bị; nếu thất bại (có thể do thiết bị ở đằng sau một NAT), ICE lấy địa chỉ bên ngoài của thiết bị bằng cách sử dụng một máy chủ STUN, và nếu không thành công, lưu lượng mạng được chuyển qua một máy chủ chuyển tiếp TURN

ICE được chạy vào lúc bắt đầu của một phiên trước khi thiết lập phiên SRTP giữa các trình duyệt Nó cũng được sử dụng để thiết lập các kênh dữ liệu không media

Trang 17

17

h) TLS

TLS - Transport Layer Security (các phiên bản cũ được gọi là SSL - Secure Sockets Layer), là một lớp chèngiữa TCP và các ứng dụng cung cấp các dịch vụ bảo mật và xác thực Bảo mật được cung cấp bằng cách mã hóa các gói tin "trên dây" Xác thực được cung cấp bằng cách sử dụng giấy chứng nhận kỹ thuật số Duyệt web an toàn ngày nay (HTTPS) chỉ sử dụng vận chuyển TLS WebRTC có thể tận dụng lợi thế của TLS cho báo hiệu và bảo mật giao diện người dùng Ngoài ra còn có một phiên bản của TLS chạy trên UDP, được gọi là DTLS - Datagram TLS, và một phiên bản có thể được sử dụng để tạo ra các khóa cho SRTP được gọi là DTLS-SRTP [1]

i) TCP

Giao thức TCP - Transmission Control Protocol - là một giao thức lớp vận chuyển trong chồng giao thức IP, nó cung cấp vận chuyển đáng tin cậy với kiểm soát tắc nghẽn và kiểm soát luồng TCP được sử dụng để vận chuyển trên web (HTTP), nhưng không phù hợp để thực hiện truyền thông thời gian thực như trong RTP, tại vìviệc truyền tải lại được sử dụng để đảm bảo độ tin cậy tạo ra sự chậm trễ quá lâu Giống như trong UDP, TCP sử dụng một khái niệm về cổng, một số nguyên 16-bit, để tách riêng các luồng và các giao thức TCP được cung cấp bởi hệ điều hành ở bên dưới trình duyệt [1]

j) DTLS

DTLS - Datagram TLS - là một phiên bản của TLS chạy trên UDP, nó cung cấp tính bảo mật và xác thực tương tự như trong TLS UDP đi qua NAT dễ dàng hơn và có thể phù hợp hơn cho các ứng dụngpeer-to-peer

k) UDP

UDP - User Datagram Protocol - là một giao thức lớp vận chuyển trong chồng giao thức IP cung cấp dịch vụ gói tin không đáng tin cậy cho các lớp phía trên UDP thường được sử dụng để vận chuyển trao đổi gói tin nhỏ và ngắn (ví dụ các gói tin DNS) hoặc

để vận chuyển media thời gian thực như là RTP UDP được cung cấp để trao đổi thông tinrất nhanh và hiệu quả; tuy nhiên, người sử dụng UDP phải đối phó với khả năng mất gói tin Ngoài ra, UDP không có kiểm soát tắc nghẽn, vì vậy người sử dụng phải nhạy cảm với việc mất gói tin và tắc nghẽn để tránh làm quá tải các kết nối Internet Giống như TCP, UDP sử dụng khái niệm về cổng, một số nguyên 16-bit, để phân tách các luồng và các giao thức [1]

Trang 18

18

Hầu hết các ứng dụng Internet sử dụng vận chuyển đáng tin cậynhư là TCP, trong

đó các gói dữ liệu bị mất sẽ tự động được truyền lại Trình duyệt web, email, và dữ liệu âm thanh và video sử dụng vận chuyển đáng tin cậy Gói tin nhận được được xác nhận, và việc thiếu một xác nhận sau một thời gian nhất định sẽ kích hoạt việc truyền lại của các gói tin cho đến khi nó được xác nhận Thông tin liên lạc thời gian thực không thể tận dụng lợi thế của loại hình vận chuyển đáng tin cậy này do sự chậm trễ

về thời gian cho việc phát hiện mất gói tin và nhận các gói tin truyền lại Mất gói tin khi tải một trang web có thể dẫn đến việc đợi thêm một hoặc hai giây để tải đầy đủ Một phiên giao tiếp thời gian thực không thể tạm dừng một hoặc hai giây ở giữa một cuộc trò chuyện bằng giọng nói, hoặc tạm dừng phát lại video một giây trong khi chờ đợi truyền lại các thông tin còn thiếu Thay vào đó, hệ thống thông tin liên lạc thời gian thực chỉ cần làm tốt nhất có thể khi thông tin bị mất Các kỹ thuật để che đậy việc mất gói tin hoặc giảm thiểu những tác động của nó được gọi là PLC - Packet Loss Conceal

Sự mất mát gói tin trung bình qua Internet là rất thấp Mặc dù ít khi xảy ra, việc mất gói tin lại xảy ra đột ngột, dẫn đến mất gói cao hơn trong khoảng thời gian ngắn Khả năng xử lý những sự kiện mất mát trong thời gian ngắn có tác động lớn đến chất lượng cảm nhận của một hệ thống thông tin liên lạc Các codec tiên tiến, đặc biệt là các codec âm thanh Opus, được thiết kế để cung cấp một trải nghiệm người dùng tốt ngay

cả khi mất gói tin cao Ngoài ra, thông tin phản hồi thời gian thực từ người nhận media cũng cung cấp khả năng làm giảm băng thông hay độ phân giải trong quá trình tắc nghẽn gói, cung cấp một trải nghiệm người dùng tốt hơn và chia sẻ băng thông công bằng với những người sử dụng Internet khác UDP được cung cấp bởi hệ điều hành phía dưới trình duyệt

l) SCTP

SCTP - Stream Control Transport Protocol –là một tiêu chuẩn của IETF (RFC 4960) [16] nằm ở tầng chuyên vận, nó cung cấp vận chuyển đáng tin cậy hoặc không đáng tin cậy trên IP cùng với việc kiểm soát tắc nghẽn và nhiều dòng trong một phiên Kiểm soát tắc nghẽn là khả năng của một giao thức để cảm nhận được khi mất gói tin Internet và sự chậm trễ, và tự động điều chỉnh tốc độ gửi của mình để giảm thiểu những tác động Nhiều dòng trong một phiên cho phép một phiên duy nhất được phân

Trang 19

19

chia thành một số dòng, mỗi dòng trong số đó có thể chia sẻ băng thông sẵn có trong phiên một cách công bằng

SCTP không được hỗ trợ phổ biến trong các hệ điều hành, do đó các trình duyệt sẽ

có riêng chồng giao thức SCTP của chúng được xây dựng sẵn cho kênh dữ liệu

m) IP

IP - Internet Protocol - là giao thức lớp mạng làm nền tảng cho Internet IP phiên bản 4, IPv4, phiên bản hiện tại, đang bị hết địa chỉ định danh duy nhất, được gọi là địa chỉ IP IP phiên bản 6, IPv6 đã được định nghĩa để mở rộng đáng kể không gian địa chỉ để cho phép Internet tiếp tục đà tăng trưởng phi thường của nó trong thế kỷ 21 Thật không may, hỗ trợ và triển khai IPv6 vẫn tiếp tục được tiến hành chậm chạp mặc

dù mạng xương sống Internet và nhiều dịch vụ và các Website hiện đang hỗ trợ nó Ngày nay, không phải tất cả các nhà cung cấp dịch vụ Internet (ISP) hỗ trợ IPv6 Đàm phán media và dữ liệu truyền tải trên các phiên bản khác nhau của IP có thể được thực hiện bằng cách sử dụng ICE [1]

1.4 Các API của WebRTC

Các ứng dụng sử dụng WebRTC thường cần làm những việc sau:

 Lấy các dòng audio, video hoặc dữ liệu khác

 Lấy thông tin về mạng như địa chỉ IP và cổng, và trao đổi với khách hàng WebRTC khác (peer) để cho phép kết nối, thậm chí kết nối qua NAT và tường lửa

 Phối hợp tín hiệu thông tin liên lạc để báo lỗi và bắt đầu hoặc kết thúc phiên

 Trao đổi thông tin về media và khả năng của khách hàng, chẳng hạn như độ phân giải và codec

 Giao tiếp thời gian thực với audio, video và dữ liệu

Để lấy được và truyền các dòng dữ liệu, WebRTC thực hiện các API sau đây [5]:

 MediaStream: tiếp cận với dòng dữ liệu, chẳng hạn như từ máy ảnh và microphonecủa người dùng [7]

 RTCPeerConnection: thực hiện các cuộc gọi audio hoặc video, với hỗ trợ cho việc mã hóa và quản lý băng thông

Trang 20

20

 RTCDataChannel: truyền dữ liệu bất kỳ thông qua giao tiếp peer-to-peer (gửi tin nhắn văn bản, gửi file, trò chơi trực tuyến…)

1.5 Kênh báo hiệu trong WebRTC

WebRTC sử dụng RTCPeerConnection API để giao tiếp các dòng dữ liệu giữa các trình duyệt (các peer), nhưng nó cũng cần có một cơ chế phối hợp truyền thông và gửi các thông báo kiểm soát, quá trình này được gọi là báo hiệu Phương pháp và giao thức báo hiệu không được quy định bởi WebRTC: báo hiệu không phải là một phần của RTCPeerConnectionAPI.Thay vào đó, các nhà phát triển ứng dụng WebRTC có thể chọn bất cứ giao thức báo hiệu nào họ thích, chẳng hạn như SIP hoặc XMPP, và bất kỳ kênh truyền thông thích hợp nào khác Ví dụ EasyRTC framework được xây dựng sử dụng Socket.io(trong đó sử dụng WebSocket [14]) trên máy chủ Node.js

Báo hiệu được sử dụng để trao đổi ba loại thông tin sau [4]:

 Thông báo quản lý phiên: để khởi tạo hoặc kết thúc phiên và báo lỗi

 Cấu hình mạng: để trao đổi thông tin cấu hình mạng với bên ngoài (địa chỉ IP

Trang 21

21

Trình duyệt Web

Trình duyệt Web

Máy chủ báo hiệu

Báo hiệu

Mô tả phiên Ứng dụng

Hình 4: Kênh báo hiệu trong WebRTC

1.6 Bảo mật trong WebRTC

Có một số nguyên nhân chính dẫn đến một ứng dụng thông tin liên lạc thời gian thực có thể bị lỗi bảo mật:

 Media hoặc dữ liệu không được mã hóa có thể bị can thiệp trên đường truyền giữa các trình duyệt

 Một ứng dụng có thể ghi lại và phân phối video hoặc audio mà người sử dụng không biết

WebRTC có một số tính năng để tránh những vấn đề bảo mật này [6]:

 WebRTC được triển khai sử dụng giao thức an toàn như DTLS và SRTP

 Mã hóa là bắt buộc đối với tất cả các thành phần WebRTC, bao gồm cả cơ chế truyền báo hiệu

 WebRTC không phải là một plugin: các thành phần của nó chạy bên trong trình duyệt và không phải trong một tiến trình riêng biệt Các thành phần WebRTC không yêu cầu cài đặt riêng biệt và được cập nhật bất cứ khi nào trình duyệt được cập nhật

Trang 22

22

 Việc truy cập máy ảnh và microphone phải được cho phép một cách rõ ràng,

và khi máy ảnh hoặc microphone đang chạy, nó được thể hiện rõ bởi giao diện người dùng [18]

Trong chương này chúng tôi đã tìm hiểu được tổng quan về truyền thông thời gian thực với WebRTC, kiến trúc, chồng giao thức, các API, kênh báo hiệu và mô hình bảo mật trong WebRTC Chương tiếp theo của luận văn, chúng tôi sẽ tìm hiểu về một framework được viết trên WebRTC để hỗ trợ các nhà phát triển phần mềm viết các ứng dụng sử dụng WebRTC

Trang 23

23

CHƯƠNG 2: GIỚI THIỆU VỀ EASYRTC FRAMEWORK

WebRTC cung cấp các API ở tầm trung cho các nhà phát triển phần mềm, tức là các nhà phát triển có thể sử dụng các WebRTC API để kết nối với máy ảnh hoặc liên hệ với các máy chủ TURN và STUN Tuy nhiên để hoàn thành một phần mềm sử dụng WebRTC, các nhà phát triển vẫn phải thực hiện việc truyền các gói tin giữa các trình duyệt để thực hiện kết nối peer-to-peer Đây vẫn là một công việc phức tạp đòi hỏi rất nhiều công sức của các nhà lập trình

Vì vậy, để hỗ trợ phát triển các ứng dụng sử dụng WebRTC, một số nhà cung cấp

đã phát triển các framework dựa trên WebRTC cho phép các nhà phát triển dễ dàng sử dụng để tạo ra các sản phẩm phần mềm có sử dụng WebRTC một cách dễ dàng và tốn

Phần còn lại của Chương 2 sẽ giới thiệu về EasyRTC framework và cách sử dụng

để xây dựng một ứng dụng WebRTC

2.1 Giới thiệu về EasyRTC framework

EasyRTC là một framework được xây dựng trên WebRTC, một tiêu chuẩn đang nổi lên của W3C/IETF cho truyền thông thời gian thực của audio, video và dữ liệu giữa các trình duyệt web WebRTC hỗ trợ truyềnaudio, video và dữ liệu dựa trên cơ sở peer-to-peer nên đòi hỏi rất ít sự hỗ trợ từ phía các máy chủ

EasyRTC framework bao gồm một thư viện JavaScript phía client và một thư viện JavaScript phía máy chủ được xây dựng dựa trên nền tảng Node.js Tại vì các thư viện WebRTC được xây dựng vào trong mỗi trình duyệt nên nó không đòi hỏi bất kỳ một plugin nào cho trình duyệt [20]

Trang 24

24

Trình duyệt Chrome của Google hỗ trợ rộng nhất cho các WebRTC API Trình duyệt Opera hiện nay đang sử dụng một bộ lõi tương tự như Chrome và do đó nó cũng

hỗ trợ cho WebRTC như Chrome Firefox cung cấp hỗ trợ tuyệt vời cho truyền thông

dữ liệu nhưng mới chỉ hỗ trợ ở mức cơ bản cho cuộc trò chuyện video (nó thiếu khả năng thiết lập độ phân giải máy ảnh và lập trình cho phép chia sẻ màn hình)

WebRTC có tiềm năng rất lớn khi nó được tiêu chuẩn hóa một cách đầy đủ để hỗ trợ các cuộc trò chuyện và hội nghị truyền hình, các trò game nhiều người và nhiều ứng dụng audio, video và dữ liệu khác

Cũng giống như các phần mềm khác, WebRTC gặp phải vấn đề về sức mạnh đi cùng với sự phức tạp WebRTC có một đường cong học tập mà nó có thể cản trở việc

sử dụng bởi các nhà phát triển web Để ẩn đi sự phức tạp đó, Priologic đã xây dựng EasyRTC framework [20]

Một ứng dụng WebRTC thường cần phải làm hầu hết các bước sau đây:

 Lấy quyền truy cập vào camera và microphone dưới hình thức một dòng media

 Thiết lập một kết nối đến một máy chủ báo hiệu

 Thực hiện một cuộc gọi đến một người trên một trình duyệt khác

 Kết nối các dòng media tới các thẻ video

Sử EasyRTCframework, một số bước có thể được gom lại vào một lời gọi hàm duy nhất, làm đơn giản hóa công việc của các nhà phát triển đi rất nhiều, đặc biệt là nếu các nhà phát triển web đang cố gắng hỗ trợ nhiều nền tảng

2.2 Cài đặt và chạy máy chủ EasyRTC

Như đã tìm hiểu ở phần trên, EasyRTC framework bao gồm hai phần, phần thư viện chạy trên máy chủ và phần thư viện phía client

Máy chủ EasyRTC có thể chạy trên hầu hết các hệ điều hành như Windows, Mac và Ubuntu Dưới đây chúng tôi sẽ hướng dẫn cài đặt máy chủ EasyRTC trên hệ điều hành Windows server 2008:

1 Cài đặt Node.js:

Như đã giới thiệu ở phần trên, máy chủ EasyRTC sử dụng thư viện Node.js

Để cài đặt Node.js trên máy chủ, cần thực hiện các bước sau [13]:

Trang 25

2 Tạo thư mục ứng dụng cho EasyRTC Các module cần thiết để chạy Node.js

và EasyRTC sẽ được cài đặt vào thư mục này

Ví dụ thư mục: C:\Users\Hiep\nodes\easyrtc

3 Tải về các file trong thư mục server_example từ

https://github.com/priologic/easyrtc/tree/master/server_example vào thư mục ứng dụng EasyRTC vừa tạo ở trên

4 Trong Start menu trong Windows, chạy chương trình Node.js command prompt

5 Chuyển đến thư mục ứng dụng EasyRTC tạo ở trên Ví dụ:

1 Trong Start menu trong Windows, chạy chương trình Node.js command prompt

2 Chuyển đến thư mục ứng dụng EasyRTC tạo ở trên Ví dụ:

C:\> cd C:\Users\Hiep\nodes\easyrtc

3 Chạy lệnh sau để bắt đầu chạy máy chủ EasyRTC:

C:\Users\Hiep\nodes\easyrtc> npm server.js Nếu chạy thành công, chúng ta sẽ thấy thông báo sau hiện ra trên màn hình Node.js command:

C:\Users\Hiep\nodes\easyrtc>node server.js

info - EasyRTC: Starting EasyRTC Server (v1.0.12) on Node (v0.10.32) info - EasyRTC: EasyRTC Server Ready For Connections (v1.0.12)

Trang 26

<head>

<title>WebRTC Demo</title>

<script src="/socket.io/socket.io.js"></script>

<script type="text/javascript" src="/easyrtc/easyrtc.js"></script>

<script type="text/javascript" src="mylogic.js"></script>

</head>

Chúng ta thêm hai thẻ <video> vào trong phần <body> của trang web Một thẻ

<video> để hiển thị video từ máy ảnh của máy tính cục bộ, một thẻ <video> để hiển thị video từ một máy kết nối đến

Trang 27

27

Trách nhiệm chính của hàm khởi tạo này là gọi hàm easyrtc.connect( ) để kết nối tới máy chủ tín hiệu EasyRTC, nó có những tham số đầu vào sau:

 applicationName: là một chuỗi để xác định tên của ứng dụng, mỗi ứng dụng

có một tên khác nhau vì vậy sẽ có thể có danh sách người dùng khác nhau

 successCallback (easyrtcId, roomOwner): là một hàm được gọi khi kết nối thành công easyrtcId là một định danh duy nhất cho người dùng kết nối roomOwner là true nếu người dùng tạo ra phòng để kết nối đến

 errorCallback (errorCode, errorText): là một hàm được gọi khi kết nối không thành công errorCode là mã lỗi được trả về, và errorText là một chuỗi mô tả

lỗi trả về

Chúng ta phải kết nối thành công trước khi gọi một người dùng nào khác

Trong hàm khởi tạo, chúng ta cũng sẽ khai báo hàm callback để biết được ai vừa kết nối vào máy chủ:

easyrtc.setRoomOccupantListener( roomListener)

Hàm callback roomListener sẽ được gọi khi bất kỳ một người dùng nào khác kết nối hoặc ngắt kết nối vào ứng dụng “Company_Chat_Line”, và nó cũng được gọi ngay sau khi gọi hàm easyrtc.connect( )

Hàm khởi tạo sẽ trở thành như sau:

function my_init() {

easyrtc.setRoomOccupantListener( roomListener);

var connectSuccess = function(myId) {

console.log("My easyrtcid is " + myId);

function(){ // success callback

var selfVideo = document.getElementById("self");

easyrtc.setVideoObjectSrc(selfVideo, easyrtc.getLocalStream());

Trang 28

28

easyrtc.connect("Company_Chat_Line", connectSuccess, connectFailure);

},

connectFailure

);

}

Hàm callback roomListener có hai tham số đầu vào:

 Tên phòng mà người dùng kết nối đến

 Danh sách các định danh của người dùng đã kết nối vào cùng một ứng dụng Trong ví dụ của chúng ta, hàm callback roomListener sẽ duy trì một danh sách các nút để gọi những người khác kết nối tới ứng dụng "Company_Chat_Line" Chúng ta sẽ thêm một <div> vào trong phần<body> để chứa các nút này

Hàm callback roomListener được viết như sau:

function roomListener(roomName, otherPeers) {

var otherClientDiv = document.getElementById('otherClients');

Trang 29

 easyrtcid: một định danh duy nhất cho người dùng cần kết nối tới

 function successCallback(easyrtcid): hàm callback được gọi khi khởi tạo cuộc gọi thành công

 function errorCallback(errorCode, errorText): hàm callback được gọi khi khởi tạo cuộc gọi không thành công

 function accepted(wasAccepted,easyrtcid): hàm callback được gọi khi cuộc gọi được phía bên kia chấp nhận hay không

Hàm easyrtc.call( ) được thực hiện như sau:

Trang 30

30

Tiếp đến, chúng ta cần thiết lập một hàm callback để gắn dòng media trả về từ người được gọi vào thẻ video caller

easyrtc.setStreamAcceptor( function(callerEasyrtcid, stream) {

var video = document.getElementById('caller');

2.4 Một số API tiện ích khác của EasyRTC

Dưới đây liệt kê một số hàm tiện ích khác của EasyRTC hay được sử dụng trong các ứng dụng WebRTC

Chỉ chia sẻ âm thanh hoặc video

Nếu chúng ta không muốn chia sẻ âm thanh hoặc video, ta có thể vô hiệu hóa nó với một trong những lời gọi dưới đây [20]

easyrtc.enableAudio(false);

easyrtc.enableVideo(false);

Các lời gọi này xác định nội dung của các dòng media địa phương khởi tạo bởi hàm easyrtc.initMediaSource, vì vậy chúng ta phải gọi cho chúng trước khi gọi hàm easyrtc.initMediaSource

Thiết lập băng thông video

Chúng ta có thể thiết lập băng thông sử dụng để gửi và nhận mỗi dòng media bằng cách gọi hàm easyrtc.setVideoBandwidth( ) Hàm này nhận một đối số số nguyên duy nhất đại diện cho băng thông mong muốn tính theo kilobits mỗi giây [20]

easyrtc.setVideoBandwidth (45);

Ngày đăng: 02/07/2015, 16:38

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1. Alan B. Johnston and Daniel C. Burnett (2013), WebRTC: APIs and RTCWEB Protocols of the HTML5 Real-Time Web, Digital Codex LLC, pp. 10, 124, 128, 132 Sách, tạp chí
Tiêu đề: WebRTC: APIs and RTCWEB Protocols of the HTML5 Real-Time Web
Tác giả: Alan B. Johnston and Daniel C. Burnett
Năm: 2013
2. Ilya Grigorik (2013), High Performance Browser Networking, O'Reilly Media, pp. 310-312 Sách, tạp chí
Tiêu đề: High Performance Browser Networking
Tác giả: Ilya Grigorik
Năm: 2013
3. Salvatore Loreto and Simon Pietro Romano,Real-Time Communication with WebRTC, O'Reilly Media, pp. 4-5 Sách, tạp chí
Tiêu đề: Real-Time Communication with WebRTC
4. Sam Dutton (2013), WebRTC in the real world: STUN, TURN and signaling, http://www.html5rocks.com/en/tutorials/webrtc/infrastructure/ Sách, tạp chí
Tiêu đề: WebRTC in the real world: STUN, TURN and signaling
Tác giả: Sam Dutton
Năm: 2013
5. Harald Alvestrand and Stefan Hồkansson (2014), Web Real-Time Communications Working Group Charter, http://www.w3.org/2011/04/webrtc-charter.html Sách, tạp chí
Tiêu đề: Web Real-Time Communications Working Group Charter
Tác giả: Harald Alvestrand and Stefan Hồkansson
Năm: 2014
6. Sean Turner, Ted Hardie and Cullen Jennings (2014), Rtcweb Status Pages, http://tools.ietf.org/wg/rtcweb/charters Sách, tạp chí
Tiêu đề: Rtcweb Status Pages
Tác giả: Sean Turner, Ted Hardie and Cullen Jennings
Năm: 2014
7. Daniel C. Burnett, Adam Bergkvist, Cullen Jennings and Anant Narayanan (2012), Media Capture andStreams,http://dev.w3.org/2011/webrtc/editor/getusermedia.html Sách, tạp chí
Tiêu đề: Media Capture and "Streams
Tác giả: Daniel C. Burnett, Adam Bergkvist, Cullen Jennings and Anant Narayanan
Năm: 2012
8. Justin Uberti and Sam Dutton (2013), WebRTC General Overview, http://www.webrtc.org/reference/architecture Sách, tạp chí
Tiêu đề: WebRTC General Overview
Tác giả: Justin Uberti and Sam Dutton
Năm: 2013
9. J. Rosenberg and H. Schulzrinne (2012), An Offer/Answer Model with the Session Description Protocol (SDP), http://tools.ietf.org/html/rfc3264 Sách, tạp chí
Tiêu đề: An Offer/Answer Model with the Session Description Protocol (SDP)
Tác giả: J. Rosenberg and H. Schulzrinne
Năm: 2012
10. Andrii Sergiienko (2014), WebRTC Blueprints, Packt Publishing, pp. 42 Sách, tạp chí
Tiêu đề: WebRTC Blueprints
Tác giả: Andrii Sergiienko
Năm: 2014
11. Jason Lengstorf and Phil Leggetter (2013), Realtime Web Apps With HTML5 WebSocket, PHP, and jQuery, Apress, pp.10 Sách, tạp chí
Tiêu đề: Realtime Web Apps With HTML5 WebSocket, PHP, and jQuery
Tác giả: Jason Lengstorf and Phil Leggetter
Năm: 2013
12. Vanessa Wang, Frank Salim and Peter Moskovits (2013), The Definitive Guide to HTML5 WebSocket, Apress, pp. 8 Sách, tạp chí
Tiêu đề: The Definitive Guide to HTML5 WebSocket
Tác giả: Vanessa Wang, Frank Salim and Peter Moskovits
Năm: 2013
13. Pedro Teixeira (2013), Professional Node.js: Building JavaScript-Based Scalable Software, John Wiley &amp; Sons, Inc, pp. 4 Sách, tạp chí
Tiêu đề: Professional Node.js: Building JavaScript-Based Scalable Software
Tác giả: Pedro Teixeira
Năm: 2013
14. Rohit Rai (2013), Socket.IO Real-time Web Application Development, Packt Publishing, pp. 48 Sách, tạp chí
Tiêu đề: Socket.IO Real-time Web Application Development
Tác giả: Rohit Rai
Năm: 2013
15. M. Thornburgh (2013), Adobe Secure Real-Time Media Flow Protocol, http://tools.ietf.org/html/draft-thornburgh-adobe-rtmfp Sách, tạp chí
Tiêu đề: Adobe Secure Real-Time Media Flow Protocol
Tác giả: M. Thornburgh
Năm: 2013
16. R. Stewart (2007), Stream Control Transmission Protocol, http://tools.ietf.org/html/rfc4960 Sách, tạp chí
Tiêu đề: Stream Control Transmission Protocol
Tác giả: R. Stewart
Năm: 2007
17. J. Rosenberg (2010), Interactive Connectivity Establishment (ICE), http://tools.ietf.org/html/rfc5245 Sách, tạp chí
Tiêu đề: Interactive Connectivity Establishment (ICE)
Tác giả: J. Rosenberg
Năm: 2010
18. E. Rescorla (2013), Security Considerations for RTC-Web, http://tools.ietf.org/html/draft-ietf-rtcweb-security Sách, tạp chí
Tiêu đề: Security Considerations for RTC-Web
Tác giả: E. Rescorla
Năm: 2013
19. Sam Dutton (2013), Getting Started with WebRTC, http://www.html5rocks.com/en/tutorials/webrtc/basics/ Sách, tạp chí
Tiêu đề: Getting Started with WebRTC
Tác giả: Sam Dutton
Năm: 2013
20. Doug Pelton (2013), EasyRTC Framework Tutorial, http://easyrtc.com/docs/guides/easyrtc_client_tutorial.php Sách, tạp chí
Tiêu đề: EasyRTC Framework Tutorial
Tác giả: Doug Pelton
Năm: 2013

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w