Tải bản đầy đủ (.docx) (39 trang)

Đồ án phát triển ứng dụng hội họp trực tuyến dựa trên công nghệ web rtc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.12 MB, 39 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

PHÁT TRIỂN ỨNG DỤNG HỘI HỌP TRỰC
TUYẾN DỰA TRÊN CƠNG NGHỆ WEB-RTC
Mơn: Đồ án 2

Lớp: SE122.N21.PMCL
Giảng viên: Nguyễn Công Hoan
Sinh viên: Phạm Quang Việt – 20522153

Thành phố Hồ Chí Minh, tháng 2 năm 2023


Mục lục
Chương 1: Tổng quan

4

1.1

Mục đích nghiên cứu

4

1.2

Đối tượng nghiên cứu

5


1.3

Phạm vi đề tài

6

Chương 2: Cơ sở lý thuyết và cơng nghệ
2.1

7

Cơng nghệ WebRTC

7

2.1.1

Giới thiệu về WebRTC

7

2.1.2

Kiến trúc WebRTC

8

2.1.3

Lợi ích của WebRTC


10

2.1.4

Nhược điểm của WebRTC

11

2.2

Công nghệ Agora

11

2.2.1

Điểm nổi bật của Agora so với WebRTC thuần

12

2.2.2

Các khái niệm chính của Agora SDK

13

2.2.3

Video calling SDK


14

2.3

Nodejs

15

2.4

Socket.io

16

2.5

React Native

17

Chương 3: Phân tích yêu cầu hệ thống

19

3.1

Yêu cầu chức năng

19


3.2

Yêu cầu phi chức năng

19

3.3

Phân tích use case

20

3.3.1

Sơ đồ use case

20

3.3.2

Danh sách tác nhân hệ thống

20

3.3.3

Danh sách use case

20


3.3.4

Đặc tả use case

21

3.3.4.1

Tham gia vào phòng đã được tạo

21

3.3.4.2

Gửi tin nhắn

21

3.3.4.3

Rời khỏi phòng họp

22

3.3.4.4

Tạo mới phòng họp

23


3.3.5

Sơ đồ tuần tự

3.3.4.5

24

Tham gia vào phòng đã được tạo
2

24


3.3.4.6

Gửi tin nhắn

24

3.3.4.7

Tạo mới phòng họp

25

Chương 4: Triển khai hệ thống
4.1


26

Sơ đồ triển khai

26

4.1.1.

React Native App

26

4.1.2.

NodeJS Authentication Service

26

4.1.3.

Agora API Provider

27

4.1.4.

Java Spring Service with Socket API

27


4.2

Phương thức triển khai

27

4.2.1

Phương pháp quản lý triển khai

27

4.2.2

Công nghệ hỗ trợ triển khai

28

Chương 5: Thiết kế giao diện ứng dụng

30

5.1

Giao diện trang chủ

30

5.2


Giao diện nhập meeting code

30

5.3

Giao diện meeting room khi có trên 8 user

32

5.4

Giao diện meeting room khi có 2 user

33

5.5

Giao diện meeting room khi có mới bắt đầu meeting

34

5.6

Giao diện trị chuyện

35

5.7


Giao diện rời khỏi cuộc họp

36

Chương 6: Kết luận và hướng phát triển

37

6.1

Kết quả đạt được

37

6.2

Hạn chế

37

6.3

Hướng phát triển

37

Tài liệu tham khảo

39


3


Chương 1: Tổng quan
1.1 Mục đích nghiên cứu
Hãy tưởng tượng một ngày mà điện thoại, máy tính, tivi, có thể kết nối trực tiếp
với nhau và thực hiện được các cuộc gọi thông qua một nền tảng chung. Việc giao tiếp
của chúng ta sẽ trở nên dễ dàng hơn và điều này có thể thay thế các phương phức liên
lạc hiện có. Đó là mục tiêu mà dự án WebRTC đang theo đuổi, WebRTC được kỳ
vọng sẽ tạo bước ngoặt lớn trong lĩnh vực truyền thông đa phương tiện.
Điểm đột phá của WebRTC là ta có thể tham gia cuộc hội thoại ngay trên trình
duyệt mà khơng cần cài thêm bất cứ một phần mềm hay plugin nào khác. Nó đang
được chuẩn hóa ở cấp độ API của W3C và cấp độ giao thức của IETF, được hỗ trợ bởi
các trình duyệt Google Chrome, Mozilla Firefox và Opera trên PC và Android. Ngồi
ra WebRTC cịn được hỗ trợ trên Chrome OS. Tính đến thời điểm hiện tại, đã có trên
1 tỷ thiết bị đầu cuối hỗ trợ WebRTC, dự báo tăng lên 4 tỷ vào năm 2016, trong đó có
khoảng 1,5 tỷ người dùng thường xuyên. WebRTC có thể hoạt động trên bất cứ thiết
bị nào có cài một trong các trình duyệt hỗ trợ WebRTC.
Ở góc độ nhà phát triển, nếu khơng có WebRTC, việc tạo ra ứng dụng RTC địi
hỏi phải mất nhiều cơng sức từ việc lấy dữ liệu từ thiết bị camera, microphone đến
việc thiết lập phiên, xử lý tín hiệu, truyền tín hiệu,…. Nhưng với WebRTC, tất cả
công việc để tạo ra một cuộc hội thoại chỉ nằm trong vài chục dòng lệnh. Việc phát
triển ứng dụng với chức năng gọi điện, video chat và chia sẻ file,.. là rất đơn giản khi
dùng WebRTC kết hợp giữa JavaScript và HTML5.2 Ở góc độ người sử dụng, sử
dụng WebRTC chỉ cần thơng qua trình duyệt Web. Tính sẵn sàng cao cho phép thực
hiện cuộc gọi mà không cần đăng ký tài khoản hay cài đặt thêm thành phần nào ngồi
một trình duyệt có hỗ trợ WebRTC. Ví dụ, hai người dùng chỉ cần truy cập vào cùng
một đường dẫn web để gọi video với nhau sử dụng trình duyệt Google Chrome hay
Mozilla Firefox.
Với các ưu điểm kể trên, thì việc tìm hiểu hệ thống hội họp trực tuyến thời gian

thực trên cơ sở giải pháp kỹ thuật WebRTC và ứng dụng giải pháp kỹ thuật này vào
thực tế là vấn đề cần thiết hiện nay
.
4


1.2 Đối tượng nghiên cứu
Các ứng dụng gọi video đã trở thành một công cụ thiết yếu cho giao tiếp cá nhân
và nghề nghiệp trong thế giới ngày nay. Với việc áp dụng rộng rãi hình thức làm việc
từ xa và học tập từ xa, nhu cầu về các giải pháp liên lạc qua video chất lượng cao và
đáng tin cậy đã tăng lên nhanh chóng. Để đáp ứng nhu cầu này, nhiều tổ chức và công
ty đang phát triển các ứng dụng gọi video bằng Agora và WebRTC.
Mục tiêu nghiên cứu của dự án ứng dụng gọi video sử dụng Agora và WebRTC
tập trung vào việc cung cấp cho người dùng trải nghiệm liên lạc liền mạch và hiệu
quả. Điều này bao gồm cung cấp truyền video và âm thanh chất lượng cao, tạo giao
diện thân thiện với người dùng, đảm bảo tính bảo mật và quyền riêng tư của dữ liệu
người dùng, tối ưu hóa hiệu suất và khả năng mở rộng của ứng dụng, giúp ứng dụng
có thể truy cập được trên nhiều loại thiết bị và nền tảng và liên tục cải thiện trải
nghiệm người dùng.
Một trong những mục tiêu chính của dự án ứng dụng cuộc gọi video là cung cấp
đường truyền âm thanh và hình ảnh chất lượng cao. Điều này yêu cầu triển khai các
cơng nghệ và thuật tốn có thể xử lý hiệu quả giao tiếp thời gian thực, chẳng hạn như
độ tin cậy của mạng, loại bỏ tiếng vang và triệt tiêu tiếng ồn. Ứng dụng phải được
thiết kế để cung cấp khả năng truyền tải âm thanh và video rõ ràng và mượt mà, ngay
cả trong điều kiện mạng có băng thông thấp hoặc chất lượng thấp.
Một mục tiêu quan trọng khác là tạo giao diện thân thiện với người dùng, giúp
người dùng dễ dàng bắt đầu và tham gia vào các cuộc gọi video và phiên trò chuyện.
Điều này yêu cầu sử dụng các yếu tố thiết kế trực quan và dễ tiếp cận, chẳng hạn như
biểu tượng, nút và menu rõ ràng cũng như tích hợp các tính năng như chia sẻ màn
hình, chia sẻ tệp và trị chuyện bằng văn bản. Giao diện nên được thiết kế để nhiều

người dùng có thể truy cập và sử dụng được, bất kể trình độ kỹ năng hoặc chun mơn
kỹ thuật của họ.
Đảm bảo tính bảo mật và quyền riêng tư của dữ liệu người dùng là mục tiêu
quan trọng của dự án ứng dụng gọi video. Khi lượng thông tin cá nhân và thông tin
nhạy cảm được truyền qua giao tiếp video tăng lên, điều cần thiết là phải đảm bảo
rằng dữ liệu được bảo vệ và các phiên giao tiếp được an toàn. Điều này yêu cầu triển
khai các giao thức bảo mật và mã hóa mạnh, chẳng hạn như SSL/TLS, để bảo vệ dữ
5


liệu người dùng và đảm bảo rằng các phiên giao tiếp được bảo vệ khỏi bị hack và các
mối đe dọa bảo mật khác.
1.3 Phạm vi đề tài
Đề tài nghiên cứu phần mềm hỗ trợ viêc hội họp trực tuyến cho các cá nhân hoặc
cho các tổ chức nhỏ, sử dụng công nghệ WebRTC và thư viện Agora. Đề tài được
nghiên cứu và xây dựng để đáp ứng các nhu cầu về hội họp như:
 Hội họp trực tuyến bằng video thời gian thực
 Gửi tin nhắn cho mọi người trong cuộc hội họp
 Hội họp cùng lúc với 2 hoặc nhiều người ở nhiều nơi khác nhau về mặt
địa lý.
 Phân tích và nghiên cứu thư viện Agora và ứng dụng của nó vào hệ thống
hội họp trực tuyến.
Đề tài được thử nghiệm đầu tiên trong môi trường làm việc của một nhóm nhỏ
người sử dụng. Sau đó sẽ được mở rộng rãi hơn với nhiều khách hàng hơn.

6


Chương 2: Cơ sở lý thuyết và công nghệ
2.1 Công nghệ WebRTC

2.1.1 Giới thiệu về WebRTC
WebRTC (Web Real-time Communication), hay Giao tiếp thời gian thực trên
web, là một công nghệ cho phép giao tiếp ngang hàng, thời gian thực trực tiếp trong
trình duyệt web mà khơng cần bất kỳ plugin hoặc phần mềm bổ sung nào. Nó cung
cấp một giải pháp hoàn chỉnh cho giao tiếp âm thanh, video và dữ liệu giữa các trình
duyệt, cũng như giữa trình duyệt và ứng dụng gốc.
WebRTC được bắt đầu phát triển vào năm 2011 với sự hợp tác giữa Google,
Mozilla và Opera Software. Mục tiêu là tạo ra một tiêu chuẩn cho giao tiếp thời gian
thực có thể được hỗ trợ nguyên bản trong các trình duyệt web mà khơng cần plugin
hoặc phần mềm bổ sung.
Các điểm nổi bật chính trong quá trình phát triển của WebRTC:
● Bản phát hành lần đầu (2012): Phiên bản đầu tiên của đặc tả WebRTC
được phát hành vào năm 2012, cung cấp tiêu chuẩn cho giao tiếp thời
gian thực trong trình duyệt. Điều này cho phép các nhà phát triển bắt
đầu xây dựng các ứng dụng dựa trên WebRTC và tạo tiền đề cho việc
các nhà cung cấp và nhà phát triển trình duyệt áp dụng rộng rãi
WebRTC.
● Giới thiệu API DataChannel (2013): Việc giới thiệu API DataChannel
vào năm 2013 cho phép trao đổi dữ liệu trực tiếp giữa các trình duyệt,
cho phép các trường hợp sử dụng mới như chia sẻ tệp và trò chơi nhiều
người chơi.
● Hỗ trợ trình duyệt rộng rãi (2015-2017): Trong vài năm tới, WebRTC đã
được các nhà cung cấp trình duyệt áp dụng rộng rãi, với sự hỗ trợ riêng
cho WebRTC có sẵn trong Google Chrome, Mozilla Firefox, Apple
Safari, Microsoft Edge và các trình duyệt khác.
● Mở rộng hệ sinh thái WebRTC (2018-hiện tại): Trong những năm gần
đây, hệ sinh thái WebRTC đã tiếp tục phát triển với nhiều công cụ, dịch
7



vụ và nền tảng nguồn mở và thương mại có sẵn để giúp các nhà phát
triển xây dựng các ứng dụng và dịch vụ WebRTC.
● Phát triển các sản phẩm và dịch vụ do WebRTC cung cấp: WebRTC
cũng đã được sử dụng để phát triển nhiều loại sản phẩm và dịch vụ, bao
gồm nền tảng hội nghị truyền hình, nền tảng giáo dục trực tuyến, dịch
vụ trò chơi, v.v..
2.1.2 Kiến trúc WebRTC
Để hai ứng dụng WebRTC có thể nhận ra nhau, điều đầu tiên cần làm là thiết
lập kết nối giữa các trình duyệt mà chúng ta muốn kết nối với nhau. WebRTC có cung
cấp các API cho phép thực hiện việc kết nối, nhưng không bao gồm chức năng báo
hiệu. Tức là cách gửi thông tin của một client đến các client khác để thực hiện việc kết
nối ngang hàng. Đây gọi là báo hiệu (Signaling). Báo hiệu có thể triển khai theo nhiều
cách và do đó, những nhà phát triển ứng dụng phải dưa ra giải pháp cho việc gửi và
nhận các báo hiệu này. Websockets là một giải pháp khá hiệu quả cho việc này.
Websockets tạo kết nối hai chiều mở giữa trình duyệt và máy chủ. Điều này có nghĩa
là tương tác giữa trình duyệt và máy chủ dựa trên sự kiện và trình duyệt khơng phải
thăm dò ý kiến của máy chủ để trả lời mỗi khi dữ liệu phải được trao đổi.

8


Tuy nhiên, một ứng dụng WebRTC cần nhiều hơn là chỉ một signaling server
là đủ. Bởi vì trong mơi trường internet, để thực hiện việc gửi và nhận data giữa các
client với nhau thì bản thân chúng phải biết một số thơng tin đặc thù của nhau. Trong
đó, thơng tin quan trọng nhất là địa chỉ IP của client. Trong q trình kết nối, các
client phải biết thơng tin này của nhau thì mới có thể tạo và nhận các kết nối của nhau
được. Đơi khi, bản thân client khó có thể biết được địa chỉ IP cơng khai của mình, đặc
biệt là client đứng sau tường lửa hoặc NAT, điều mà rất phổ biến trên các thiết bị có
kết nối internet hiện nay. Để khắc phục điều này, WebRTC khuyến nghị sử dụng máy
chủ STUN. Máy chủ STUN cho phép client tìm ra địa chỉ IP cơng cộng của chính họ

và loại các NAT đứng trước họ. Đơi khi, việc lấy thơng tin có thể khó khăn tùy thuộc
vào NAT, và trong trường hợp đó, máy chủ TURN có thể hỗ trợ xử lý.
Thông tin được thu thập bằng STUN sau đó được cùng sử dụng trong việc
Thiết lập kết nối tương tác (Interactive Connectivity Establishment - ICE) để điều
phối kết nối giữa các clients với nhau. ICE sẽ mơ tả cách kết nối sẽ hoạt động, giúp
clients có thể tìm thấy thơng tin và thiết lập kết nối ngang hàng. Kiến trúc cơ bản ban

9


đầu giờ có thêm các thành phần mới.

2.1.3 Lợi ích của WebRTC
WebRTC mang lại một số lợi ích chính cho người dùng và nhà phát triển khiến
nó trở thành lựa chọn phổ biến cho giao tiếp theo thời gian thực trên web. Dưới đây là
một số lợi ích quan trọng nhất của việc sử dụng WebRTC:
● Giao tiếp ngang hàng: Một trong những lợi ích lớn nhất của WebRTC là nó cho
phép giao tiếp ngang hàng (P2P) giữa các trình duyệt và thiết bị di động. Điều
này giúp loại bỏ nhu cầu về cơ sở hạ tầng phía máy chủ phức tạp và giúp việc
triển khai các ứng dụng hỗ trợ giao tiếp trở nên dễ dàng và ít tốn kém hơn. Với
10


WebRTC, người dùng có thể bắt đầu các phiên giao tiếp P2P, bao gồm các
cuộc gọi video và chia sẻ tệp mà không cần bất kỳ máy chủ tập trung nào.
● Âm thanh và video chất lượng cao: WebRTC cung cấp âm thanh và video chất
lượng cao, làm cho nó trở thành lựa chọn tuyệt vời cho các ứng dụng giao tiếp
thời gian thực. Nó hỗ trợ video độ nét cao, cung cấp cho người dùng trải
nghiệm giao tiếp liền mạch. Ngồi ra, WebRTC sử dụng các thuật tốn nâng
cao để điều chỉnh chất lượng của luồng âm thanh và video trong thời gian thực,

đảm bảo rằng người dùng nhận được trải nghiệm tốt nhất có thể, ngay cả trong
điều kiện mạng khó khăn.
● Độ trễ thấp và thời gian kết nối nhanh: WebRTC cung cấp độ trễ thấp và thời
gian kết nối nhanh, đảm bảo rằng các phiên liên lạc diễn ra nhanh chóng và
phản hồi nhanh. Điều này làm cho nó trở thành lựa chọn tuyệt vời cho các ứng
dụng giao tiếp thời gian thực đòi hỏi tương tác nhanh và nhạy, chẳng hạn như
cuộc gọi video và chơi trò chơi trực tuyến.
● Bảo mật mạnh mẽ: WebRTC cung cấp các tính năng bảo mật mạnh mẽ, bao
gồm mã hóa tất cả các luồng liên lạc để bảo vệ chống nghe lén và giả mạo.
Điều này làm cho nó trở thành một lựa chọn an tồn cho các doanh nghiệp và
cá nhân cần truyền thông tin nhạy cảm qua web.
● Khả năng tương thích đa nền tảng: WebRTC được hỗ trợ bởi tất cả các trình
duyệt chính, bao gồm Chrome, Firefox, Safari và Edge. Điều này cho phép
giao tiếp liền mạch giữa những người dùng trên các nền tảng khác nhau, giúp
các nhà phát triển dễ dàng tạo các ứng dụng giao tiếp đa nền tảng. Ngoài ra,
WebRTC có sẵn trên thiết bị di động, cho phép các nhà phát triển xây dựng các
ứng dụng giao tiếp hoạt động trên cả máy tính để bàn và thiết bị di động.
2.1.4 Nhược điểm của WebRTC
Bên cạnh những lợi ích kể trên, WebRTC vẫn còn nhiều nhược điểm cần được
cải thiện và cân nhắc nhiều:
● Khả năng tương thích với trình duyệt: Mặc dù WebRTC được hỗ trợ bởi tất cả
các trình duyệt chính, nhưng vẫn có một số trình duyệt khơng được hỗ trợ.
Điều này có thể tạo giới hạn cho người dùng và gây khó khăn cho các nhà phát
triển trong việc tiếp cận nhiều đối tượng hơn. Ngồi ra, các trình duyệt cũ hơn
11


có thể khơng có phiên bản WebRTC mới nhất, điều này có thể hạn chế chức
năng của ứng dụng.
● Độ phức tạp: WebRTC là một công nghệ phức tạp và việc triển khai nó địi hỏi

sự hiểu biết sâu sắc về phát triển web, giao thức mạng và giao tiếp thời gian
thực. Điều này có thể gây khó khăn cho các nhà phát triển mới sử dụng
WebRTC và nó cũng có thể yêu cầu đầu tư đáng kể về thời gian và tài nguyên
để phát triển và duy trì các ứng dụng dựa trên WebRTC.
● Yêu cầu về băng thông: WebRTC yêu cầu một lượng băng thông đáng kể để
truyền các luồng âm thanh và video trong thời gian thực. Điều này có thể hạn
chế việc sử dụng các ứng dụng dựa trên WebRTC ở những khu vực có băng
thơng hạn chế hoặc mạng chất lượng thấp. Ngồi ra, nó có thể làm tăng chi phí
sử dụng các ứng dụng dựa trên WebRTC đối với những người dùng phải trả
tiền cho việc sử dụng băng thông.
● Lo ngại về quyền riêng tư: WebRTC yêu cầu quyền truy cập vào máy ảnh và
micrơ của người dùng, điều này có thể gây lo ngại về quyền riêng tư. Ngoài ra,
bản chất P2P của WebRTC có thể gây khó khăn cho việc kiểm sốt quyền truy
cập vào dữ liệu người dùng và có thể giúp tin tặc truy cập thông tin nhạy cảm
dễ dàng hơn.
2.2 Công nghệ Agora
Agora là nhà cung cấp hàng đầu các giải pháp truyền thông thời gian thực cho
nhiều ngành khác nhau, bao gồm trò chơi, giáo dục và chăm sóc sức khỏe. Cơng ty
được thành lập vào năm 2014 với mục tiêu cung cấp một nền tảng giao tiếp theo thời
gian thực, dễ sử dụng, có thể mở rộng và bảo mật. Kể từ khi thành lập, Agora đã phát
triển nhanh chóng và hiện đang phục vụ cơ sở khách hàng tồn cầu trong nhiều ngành
cơng nghiệp.

12


Agora tận dụng công nghệ WebRTC để cung cấp các giải pháp giao tiếp theo
thời gian thực mà các nhà phát triển ở mọi cấp độ kỹ năng có thể truy cập được. Công
ty cung cấp API và SDK giúp đơn giản hóa quy trình tích hợp giao tiếp thời gian thực
vào ứng dụng, cũng như một loạt tính năng nâng cao, chẳng hạn như chia sẻ màn

hình, phát sóng trực tiếp và xác thực người dùng
2.2.1 Điểm nổi bật của Agora so với WebRTC thuần
So với các nhược điểm của việc phát triển ứng dụng với WebRTC thuần,
Agora đã cung cấp cho các nhà phát triển những APIs có sẵn, giúp chúng ta không cần
phải hiểu quá sâu về WebRTC nhưng vẫn có thể xây dựng được các ứng dụng thời
gian thực. Dưới đây là một số lý do mà người dùng sử dụng Agora hơn là xây dựng
ứng dụng với WebRTC thuần:
● Dễ sử dụng: Agora cung cấp các API và SDK giúp đơn giản hóa q trình tích
hợp giao tiếp thời gian thực vào một ứng dụng. Các nhà phát triển không cần
phải hiểu sâu về WebRTC để sử dụng nền tảng Agora, vì nó cung cấp một giao
diện cấp cao giúp loại bỏ những phức tạp cơ bản của công nghệ.
● Khả năng mở rộng: Agora được thiết kế để xử lý các triển khai quy mơ lớn và
có thể xử lý hàng triệu người dùng đồng thời. Nền tảng này cung cấp một loạt
các tính năng giúp đảm bảo rằng giao tiếp vẫn ổn định và đáng tin cậy ngay cả
khi tải nặng.
● Các tính năng nâng cao: Agora cung cấp một loạt các tính năng nâng cao,
chẳng hạn như chia sẻ màn hình, phát sóng trực tiếp và xác thực người dùng,
có thể khơng có sẵn trong triển khai WebRTC gốc. Các tính năng này có thể
giúp nâng cao trải nghiệm người dùng và tăng thêm giá trị cho ứng dụng.
13


● Độ tin cậy: Agora cung cấp dịch vụ được quản lý đảm nhiệm cơ sở hạ tầng và
bảo trì cần thiết để chạy nền tảng giao tiếp thời gian thực. Điều này có thể giúp
đảm bảo rằng thơng tin liên lạc vẫn ổn định và đáng tin cậy, ngay cả khi tải
nặng.
● Hỗ trợ: Agora cung cấp tài liệu, hỗ trợ và tài nguyên toàn diện để giúp các nhà
phát triển tích hợp giao tiếp thời gian thực vào ứng dụng của họ. Điều này có
thể giúp tăng tốc độ phát triển và giảm nguy cơ phát sinh vấn đề.
2.2.2 Các khái niệm chính của Agora SDK

Agora cung cấp cho các nhà phát triển nhiều SDK hỗ trợ việc giao tiếp đa
phương tiện trực tiếp theo thời gian thực. Tuy nhiên mỗi SDK đều có chung những
đặc điểm chung sau để giúp hệ thống hoạt động trơn chu
● Agora SD-RTN: Các dịch vụ tương tác cốt lõi của Agora được cung cấp bởi
Software-Defined Real-time Network (SD-RTN™) có thể truy cập và khả dụng
mọi lúc, mọi nơi trên thế giới. Mạng do phần mềm xác định không bị giới hạn
bởi thiết bị, số điện thoại hoặc vùng phủ sóng của nhà cung cấp dịch vụ viễn
thông như mạng truyền thống. Agora SD-RTN™ có các trung tâm dữ liệu trên
tồn cầu bao phủ hơn 200 quốc gia và khu vực. Mạng cung cấp độ trễ dưới
giây và tính khả dụng cao của video và âm thanh thời gian thực ở mọi nơi trên
toàn cầu.
● Agora Console: Agora Console là bảng điều khiển chính nơi bạn quản lý các
dự án và dịch vụ Agora của mình. Bảng điều khiển Agora cung cấp giao diện
trực quan để các nhà phát triển truy vấn và quản lý tài khoản Agora của họ.
● App ID: App ID là một chuỗi ngẫu nhiên được tạo trong Bảng điều khiển
Agora khi bạn tạo một dự án mới. Bạn có thể tạo nhiều dự án trong tài khoản
của mình; mỗi dự án có một ID ứng dụng khác nhau. ID ứng dụng này cho
phép người dùng ứng dụng của bạn giao tiếp an toàn với nhau. Khi bạn khởi
tạo Agora Engine trong ứng dụng của mình, bạn chuyển ID ứng dụng làm đối
số. ID ứng dụng cũng được sử dụng để tạo mã thông báo xác thực đảm bảo liên
lạc an toàn trong kênh. Bạn truy xuất ID ứng dụng của mình bằng Bảng điều
khiển Agora.
14


● App Certificate: Chứng chỉ ứng dụng là một chuỗi do Bảng điều khiển Agora
tạo để bật xác thực mã thông báo. App certificate cần thiết để tạo SDK video
hoặc mã thông báo xác thực Signaling.
● Token: Token là một khóa động được máy chủ xác thực Agora sử dụng để
kiểm tra quyền của người dùng. Bạn sử dụng Bảng điều khiển Agora để tạo mã

thông báo tạm thời cho mục đích thử nghiệm trong q trình phát triển. Trong
mơi trường dev, ta triển khai server token trong cơ sở hạ tầng bảo mật của mình
để kiểm sốt quyền truy cập vào các kênh của mình.
● Channel: Agora sử dụng tên kênh để xác định kênh. Những người dùng chỉ
định cùng một tên kênh sẽ tham gia một kênh chung và tương tác với nhau.
Một kênh được tạo khi người dùng đầu tiên tham gia. Nó khơng cịn tồn tại khi
người dùng cuối cùng rời đi.
● Channel profile: Agora hỗ trợ các cấu hình kênh như Communication (Dành
cho gọi nhóm hoặc gọi cá nhân) và Live_Broadcasting(Dành cho việc live
streaming)
● User ID: ID người dùng (UID) xác định người dùng trong kênh. Mỗi người
dùng trong một kênh phải có một ID người dùng duy nhất. Nếu ta không chỉ
định ID người dùng khi người dùng tham gia kênh, UID sẽ tự động được tạo và
gán cho người dùng.
● Stream: Stream là một chuỗi các tín hiệu nhất qn được mã hóa kỹ thuật số
có chứa dữ liệu âm thanh hoặc video. Người dùng trong một kênh xuất bản các
luồng cục bộ và đăng ký các luồng từ xa từ những người dùng khác.
2.2.3 Video calling SDK
Ở ứng dụng này, nhóm sử dụng SDK video calling, một trong những SDK mà
Agora cung cấp cho các nhà phát triển ứng dụng. Agora Video Calling cho phép
người dùng trải nghiệm video thời gian thực ở bất kỳ nền tảng ứng dụng nào. Dưới
đây là quy trình để có thể tích hợp Video calling SDK vào ứng dụng

15


Để bắt đầu một phiên, chúng ta cần triển khai các bước sau:
1. Truy xuất token: Token là chuỗi do máy tính tạo để xác thực người dùng khi
ứng dụng của bạn tham gia kênh. Ở đây chúng ta có thể truy xuất token từ
Agora Console.

2. Tham gia kênh: Gọi các phương thức để tạo và tham gia kênh; các ứng dụng
vượt qua cùng một tên kênh sẽ tham gia cùng một kênh.
3. Gửi và nhận video và âm thanh trong kênh: Tất cả người dùng gửi và nhận các
luồng video và âm thanh từ tất cả người dùng trong kênh.
2.3 Nodejs
Node.js là một môi trường thời gian chạy JavaScript đa nền tảng, mã nguồn
mở, thực thi mã JavaScript ở phía máy chủ. Nó được xây dựng trên cơng cụ
JavaScript V8 của Chrome và cho phép các nhà phát triển xây dựng các ứng dụng
mạng nhanh và có thể mở rộng bằng JavaScript.
Node.js cung cấp một bộ API phong phú để xây dựng các ứng dụng phía máy
chủ, chẳng hạn như tạo máy chủ HTTP, truy cập cơ sở dữ liệu cũng như đọc và ghi
tệp. Nó cũng có một cộng đồng các nhà phát triển lớn và tích cực, những người đã tạo
ra một hệ sinh thái rộng lớn gồm các gói và cơng cụ có thể dễ dàng cài đặt và sử dụng
trong các dự án Node.js.
Một trong những tính năng chính của Node.js là mơ hình non-blocking I/O ,
hướng sự kiện. Mơ hình này cho phép Node.js xử lý nhiều kết nối đồng thời và hiệu
quả, làm cho nó rất phù hợp với các ứng dụng thời gian thực và các trang web có lưu
lượng truy cập cao.

16


Node.js được sử dụng rộng rãi để xây dựng các ứng dụng phía máy chủ, đặc
biệt là các ứng dụng web, vi dịch vụ và ứng dụng thời gian thực. Nó cũng thường
được sử dụng để xây dựng các cơng cụ dịng lệnh và ứng dụng máy tính để bàn.

Trong dự án Working Together, Nodejs được sử dụng làm môi trường trong
việc xây dựng server Token Generator. Đây là server rất quan trọng để cấu thành một
ứng dụng hoàn chỉnh sử dụng Agora.
2.4 Socket.io

Socket.IO là một thư viện JavaScript dành cho các ứng dụng web thời gian
thực. Nó cung cấp một API đơn giản để gửi và nhận các sự kiện giữa máy khách và
máy chủ, đồng thời tự động quản lý kết nối WebSocket cơ bản, đảm bảo rằng thư
được gửi một cách đáng tin cậy và nhanh chóng.

Socket.IO cung cấp một số tính năng giúp dễ dàng xây dựng các ứng dụng thời
gian thực, chẳng hạn như ứng dụng trị chuyện, trị chơi trực tuyến và cơng cụ cộng
tác. Nó hỗ trợ giao tiếp hai chiều giữa máy khách và máy chủ, cho phép máy chủ đẩy
17


các bản cập nhật tới máy khách trong thời gian thực. Nó cũng cung cấp một số tính
năng khác như tự động kết nối lại, nén tin nhắn và quảng bá cho nhiều máy khách.
Một trong những ưu điểm chính của Socket.IO là khả năng quay trở lại các
công nghệ cũ hơn, chẳng hạn như bỏ phiếu dài, khi WebSockets khơng được trình
duyệt của máy khách hỗ trợ. Điều này cho phép bạn xây dựng các ứng dụng thời gian
thực có thể chạy trên nhiều loại thiết bị và trình duyệt mà khơng phải lo lắng về vấn
đề tương thích.
Trong dự án Working Together, SocketIO đóng vai trị làm server trung gian
hoạt động để vận chuyển các tín hiệu và các gói tin giữa các client với nhau.
2.5 React Native
React Native là một open-source framework phổ biến để xây dựng các ứng
dụng di động. Nó được phát triển bởi Facebook và cho phép các nhà phát triển xây
dựng các ứng dụng di động bằng JavaScript và thư viện React. React Native cung cấp
một bộ API và các thành phần ánh xạ tới các thành phần nền tảng gốc, cho phép các
nhà phát triển xây dựng các ứng dụng di động có giao diện tự nhiên trong khi sử dụng
một cơ sở mã chung trên các nền tảng khác nhau như iOS và Android.

React Native có thể tích hợp với ứng dụng cuộc gọi video theo nhiều cách. Thứ
nhất, nó có thể được sử dụng để xây dựng giao diện người dùng (UI) của ứng dụng

cuộc gọi video, mang lại trải nghiệm liền mạch và giống như bản gốc cho người dùng.
Điều này bao gồm xây dựng các thành phần giao diện người dùng tùy chỉnh cho luồng
video và âm thanh, chức năng trò chuyện và điều khiển cuộc gọi. Các thành phần
18


React Native có thể được tạo kiểu và hoạt ảnh để phù hợp với thiết kế và tính thẩm mỹ
của ứng dụng cuộc gọi điện video, mang lại giao diện nhất quán trên các nền tảng
khác nhau.
Thứ hai, React Native có thể được sử dụng để quản lý logic và trạng thái của
ứng dụng cuộc gọi video. Điều này bao gồm xử lý luồng video và âm thanh, quản lý
trạng thái cuộc gọi và tích hợp với API cuộc gọi video và trò chuyện do WebRTC và
Agora cung cấp. React Native cung cấp một hệ thống quản lý trạng thái cho phép các
nhà phát triển dễ dàng quản lý trạng thái của ứng dụng, đảm bảo rằng giao diện người
dùng và chức năng được cập nhật theo thời gian thực khi trạng thái thay đổi.
Ngồi ra, React Native có thể được sử dụng để tương tác với máy ảnh và micrơ
của thiết bị nhằm kích hoạt các cuộc gọi video và âm thanh. Điều này bao gồm truy
cập máy ảnh và micrô của thiết bị, điều chỉnh cài đặt máy ảnh và kiểm soát luồng
video và âm thanh trong khi gọi. React Native cung cấp các API và thư viện cho phép
các nhà phát triển truy cập vào máy ảnh và micrô, cho phép họ xây dựng các ứng dụng
cuộc gọi video giàu tính năng.
Cuối cùng, React Native có thể được sử dụng để tích hợp với các dịch vụ và
API khác, chẳng hạn như dịch vụ xác thực, quản lý người dùng và lưu trữ đám mây.
Điều này cho phép các nhà phát triển xây dựng các ứng dụng cuộc gọi video hồn
chỉnh, tồn diện, có thể dễ dàng tích hợp với các hệ thống và dịch vụ hiện có.

19


Chương 3: Phân tích yêu cầu hệ thống

3.1 Yêu cầu chức năng
● Tạo meeting: Hệ thống cần có khả năng tạo một cuộc họp mới. Sau khi
tạo cuộc họp, hệ thống cần hiển thị ID cuộc họp và cho phép người dùng
copy để gửi mã cuộc họp cho người dùng khác.
● Tham gia vào một meeting có sẵn: Hệ thống cần có tính năng cho
phép người dùng tham gia vào một meeting đã được tạo sẵn trước đó
thơng qua UUID kèm với các thông tin cá nhân của người dùng.
● Gửi và nhận văn bản: Hệ thống cần có tính năng cho phép người dùng
nhận được văn bản của những người cùng có mặt trong cuộc họp. Đồng
người người dùng cũng có thể gửi tin nhắn đến mọi người trong cuộc
họp
3.2 Yêu cầu phi chức năng
● Làm việc ổn định trên đa số các trình duyệt web hiện nay
● Giao diện người dùng thân thiện và dễ sử dụng
● Ứng dụng không bị crash khi sử dụng
● Thông tin người dùng được bảo mật

20



×