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
Trang 1ĐẠ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
Trang 33.3.4.6 Gửi tin nhắn 24
4.1.4 Java Spring Service with Socket API 27
5.3 Giao diện meeting room khi có trên 8 user 325.4 Giao diện meeting room khi có 2 user 335.5 Giao diện meeting room khi có mới bắt đầu meeting 34
Trang 4Chươ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ếpvớ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ếpcủ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ênlạ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ìnhduyệ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ởicác trình duyệt Google Chrome, Mozilla Firefox và Opera trên PC và Android Ngoà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 đòihỏ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 đếnviệ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áttriể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 khidù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ựchiệ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 ngoàimộ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ùngmột đường dẫn web để gọi video với nhau sử dụng trình duyệt Google Chrome hayMozilla 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 gianthự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àothực tế là vấn đề cần thiết hiện nay
Trang 5
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à WebRTCtậ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ệuquả Điều này bao gồm cung cấp truyền video và âm thanh chất lượng cao, tạo giaodiệ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ệungườ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ảinghiệ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áccông nghệ và thuật toá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 đượcthiế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úpngườ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ànhì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ềungười dùng có thể truy cập và sử dụng được, bất kể trình độ kỹ năng hoặc chuyên 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êuquan trọng của dự án ứng dụng gọi video Khi lượng thông tin cá nhân và thông tinnhạ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ảorằ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ểnkhai 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ữ
Trang 6liệ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ácmố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ặccho các tổ chức nhỏ, sử dụng công nghệ WebRTC và thư viện Agora Đề tài đượcnghiê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ốnghộ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
Trang 7Chươ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
Trang 8vụ 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ó cungcấ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ếtnối ngang hàng Đây gọi là báo hiệu (Signaling) Báo hiệu có thể triển khai theo nhiềucá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
Trang 9Tuy 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 quá 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
Trang 10đầ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ó chophé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
Trang 11WebRTC, 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 Ngoài ra, WebRTC sử dụng các thuật toá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 toà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 Ngoài ra, các trình duyệt cũ hơn
Trang 12có 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 Ngoà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 soá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 toàn cầu trong nhiều ngành công nghiệp
Trang 13Agora 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ầnphả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 quá 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 giaodiệ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
Trang 14● Độ 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ụngmọ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 toà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ênlạ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
Trang 15● 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 quá 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 soá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 quán đượ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
Trang 16Để 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ụngvượ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ácluồ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
Trang 17Node.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
Trang 18cá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
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ồngvideo 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
Trang 19React 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
Ngoà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ụngcuộ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 hoàn chỉnh, toà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ó