Phân tích thiết kế phát triển ứng dụng chat sử dụng NodeJS

MỤC LỤC

Phương pháp nghiên cứu

- Chức năng Video call được nhóm tự xây dựng hoàn toàn dựa trên công nghệ tự do và mã nguồn mở WebRTC. - Chức năng Realtime Chat được nhóm tự xây dựng hoàn toàn dựa trên thư viện Socket IO.

NodeJS 1. Giới thiệu

Golang 1. Giới thiệu

Lý do sử dụng

Điều này giúp nhà phát triển nhanh chóng triển khai ứng dụng mà không cần phải xây dựng lại nhiều từ đầu. - Phát triển ứng dụng đám mây: Golang được sử dụng rộng rãi cho phát triển các ứng dụng đám mây, đặc biệt là khi cần tận dụng tính năng đồng thời xử lý và hiệu suất cao.

PostgreSQL 1. Giới thiệu

Lý do sử dụng

- Đa ngôn ngữ và đa nền tảng: Hỗ trợ nhiều ngôn ngữ lập trình và nền tảng, tạo sự linh hoạt cho việc tích hợp. - Ứng dụng rộng rãi: Sử dụng phổ biến trong phát triển Web, quản lý doanh nghiệp và nghiên cứu.

Firebase

Lý do sử dụng

- Xây dựng các tính năng xác thực người dùng, lưu trữ hình ảnh, … một cách dễ dàng, nhanh chóng, giúp nhóm có thể tiết kiệm thời gian, đảm bảo tiến độ. - Các tính năng lớn trong đồ án như Firebase Authentication trong lượng người dùng không quá lớn sẽ không phát sinh thêm chi phí trong quá trình triển khai và sử dụng.

WebRTC

Xây dựng hệ thống

    - Khai báo các quy tắc Business Logic của ứng dụng - Tiếp nhận các yêu cầu từ tầng Presentation và gọi đến các Repository phù hợp để thực hiện yêu cầu và trả kết quả lại cho tầng Presentation. Mô tả các thành phần trong hệ thống Microservices Backend Bảng 3.2 Mô tả các thành phần trong hệ thống Microservices Backend.

    Hình 3.10 Kiến trúc hệ thống Microservices Backend
    Hình 3.10 Kiến trúc hệ thống Microservices Backend

    Phân tích yêu cầu

      - Đối với phương thức Đăng nhập thông qua Email và Password, nếu người dùng chưa xác nhận Email trước đó, hệ thống sẽ tiến hành chuyển người dùng đến trang Verify Email, sau khi quá trình Verify Email hoàn tất, người dùng sẽ được chuyển đến trang chủ và có thể sử dụng ứng dụng như bình thường. Để có thể tìm người lạ để gửi lời mời kết bạn, người dùng chỉ cần nhập chính xác địa chỉ Email của người đó trên thanh tìm kiếm, nếu hệ thống tìm thấy sẽ hiển thị thông tin người dùng ấy và người dùng có thể gửi lời mời tới người đó.

      Thiết kế hệ thống

      Sơ đồ Use Case

      1 Người dùng chưa đăng nhập Người dùng sử dụng phần mềm nhưng chưa đăng nhập. 2 Người dùng đăng nhập Người dùng sử dụng phần mềm đã đăng nhập 3 Thành viên phòng Chat Người dùng tham gia phòng Chat.

      Hình 3.12 Sơ đồ Use Case đối với người dùng đã đăng nhập
      Hình 3.12 Sơ đồ Use Case đối với người dùng đã đăng nhập

      Danh sách đặc tả Use Case 1. Use Case Đăng nhập

        Hệ thống kiểm tra tính hợp lệ của Email, đảm bảo Email này đã được đăng ký tài khoản trước đó và hiện tại chưa xác thực, sau đó hệ thống gửi một Email xác thực chứa đường Link xác thực đến Email của người dùng. Người dùng chọn loại lời mời muốn xem, nhấn lệnh đã gửi để xem danh sách lời mời mình đã gửi và nhấn lệnh nhận để xem danh sách lời mời kết bạn mình đã nhận. Hệ thống tìm tài khoản tương ứng với Email người dùng đã nhập và tài khoản này không phải là bạn bè hiện tại của người dùng, sau đó trả kết quả về cho người dùng ở mục người dùng.

        Danh sách phòng Chat hiển thị trên màn hình người dùng, bao gồm hình đại diện phòng Chat, tên phòng Chat, tin nhắn mới nhất và thời gian hoặc sự kiện Video nếu có trong phòng Chat. Hệ thống sẽ tiến hành cập nhập thông tin mới của người dùng và sẽ thông báo trạng thái cập nhập thành công hay chưa cho người dùng. Hệ thống sẽ tiến hành cập nhập mật khẩu mới của người dùng và sẽ thông báo trạng thái cập nhập thành công hay chưa cho người dùng.

        Người dùng vào phòng Video Call, đồng thời Hệ thống ghi nhận có phòng Video Call trong phòng Chat và thông báo đến thành viên trong phòng Chat.

        Thiết kế dữ liệu 1. Sơ đồ Logic

        Danh sách màn hình

        20 Chỉnh sửa thông tin cá nhân Chỉnh sửa thông tin cá nhân của người dùng 21 Thay đổi mật khẩu Thay đổi mật khẩu của người dùng. 22 Cài đặt thông báo Cập nhật cài đặt tình trạng bật/ tắt thông báo 23 Cài đặt Chủ đề và Ngôn ngữ Cập nhật chủ đề và ngôn ngữ của ứng dụng 24 Quản lý thiết bị Hiển thị danh sách thiết bị.

        Chi tiết màn hình

        Màn hình “Onboarding”

        - Màn hình Onboarding chỉ xuất hiện khi người dùng lần đầu tiên sử dụng ứng dụng. Màn hình này sẽ có dạng Slide, mỗi trang sẽ gồm hình ảnh, Slogan của ứng dụng nhằm gây ấn tượng cho người dùng những tính năng mà phần mềm mang lại. - Người dùng có thể nhấn nút “Next” để sang trang tiếp theo hoặc nhấn nút.

        - Ngoài ra, người dùng có thể bỏ qua màn hình này bằng cách nhấn nút “Skip” ở góc phải màn hình.

        Màn hình “Chào mừng người dùng”

        - Trong trang sẽ chứa các nút tương ứng với các phương thức đăng nhập mà ứng dụng hiện có: “Sign in with Email”, “Sign in with Google”. “Sign up with Email” để chuyển người dùng đến trang “Đăng ký” để tạo tài khoản mới. - Bên cạnh đó, trang còn có thêm một nút với Icon Setting, khi người dùng nhấn vào sẽ chuyển người dùng đến trang “Cài đặt chủ đề và ngôn ngữ”.

        Màn hình “Đăng nhập”

        - Ở màn hình Đăng nhập, người dùng có thể nhập Email và Password để tiến hành đăng nhập vào ứng dụng. Ứng dụng yêu cầu người dùng cần nhập Email đúng định dạng và mật khẩu phải có ít nhất 8 ký tự, phải bao gồm các ký tự đặc biệt và số, trong trường hợp người dùng nhập không đúng định dạng, ứng dụng sẽ báo lỗi và người dùng không thể nhấn nút “Login” để tiếp tục. - Trong trang sẽ có một nút Quên mật khẩu, người dùng có thể nhấn vào nút này sẽ được chuyển đến trang Quên mật khẩu nếu cần thiết.

        Màn hình “Đăng ký”

        - Ở màn hình Đăng ký, người dùng cần nhập Email, mật khẩu và xác nhận mật khẩu. Bên cạnh các yêu cầu như Email, mật khẩu phải đúng định dạng, ở trang này còn có thể điều kiện xác nhận mật khẩu phải trùng khớp với mật khẩu. Khi tất cả mọi điều kiện đã thoả, người dùng có thể nhấn vào nút “Register” để thực hiện tạo tài khoản mới.

        Hình 4.18 Màn hình "Đăng ký"
        Hình 4.18 Màn hình "Đăng ký"

        Màn hình “Trang chủ”

        Ngoài ra, nếu phòng Chat nào đang có cuộc gọi, sẽ có một nút Tham gia cuộc gọi hiển thị ra để người dùng có thể nhanh chóng tham gia cuộc gọi. - Đối với những phòng Chat có tin nhắn mới nhất trong ngày, sẽ được hiển thị giờ, phút nhận được tin nhắn đó, trong khi những phòng Chat có tin nhắn ở những ngày trước đó sẽ được hiển thị thêm ngày tháng nhận được tin nhắn đó. - Ngoài ra, người dùng có thể nhấn vào tìm kiếm và nút Thông báo ở AppBar của trang để chuyển đến trang tìm kiếm và trang danh sách thông báo.

        Màn hình “Chat”

        Ngoài ra, khi người dùng bắt đầu Scroll lên, một nút Quay trở về tin nhắn mới nhất sẽ được hiển thị để giúp người dùng trở về tin nhắn mới nhất một cách nhanh chóng. - Để tăng tính trải nghiệm người dùng, khi người dùng Scroll lên phía trên và tiến hành gửi tin nhắn mới, ứng dụng sẽ tự động Scroll người dùng lại tin nhắn mới nhất vừa gửi đó. - Bên cạnh việc người dùng gửi tin nhắn Text, người dùng có thể nhấn vào nút Media ở phía dưới bên trái để có thể gửi nhiều loại tin nhắn khác như hình ảnh, Video, Record, File, Gif, Sticker, vị trí,….

        - Đối với tin nhắn hình ảnh, người dùng có thể nhấn vào để xem kích thước đầy đủ của hình ảnh, tin nhắn Video khi người dùng nhấn vào có thể xem Video kèm với các nút điều khiển như tua nhanh, tua lại, dừng,… Tương tự với tin nhắn Audio, người dùng có thể nhấn vào nút Play trên tin nhắn để tiến hành nghe Audio. Riêng đối với tin nhắn File, khi nhấn vào ứng dụng sẽ kiểm tra xem File này đã có sẵn trong máy hay chưa, nếu chưa sẽ tiến hành tải về và hiển thị lên cho người dùng xem File.

        Hình 4.23 Màn hình "Chat" khi người dùng chọn các loại tin nhắn khác
        Hình 4.23 Màn hình "Chat" khi người dùng chọn các loại tin nhắn khác

        Màn hình “Danh sách thông báo”

         Các công nghệ như WebRTC, SocketIO có đặc điểm linh hoạt và có thể áp dụng vào nhiều trường hợp, tuy nhiên gây khó khăn khi thực hiện cài đặt, có nhiều bài toán cần phải giải quyết như Video Call nhóm, giữ kết nối Socket.IO,….  Các công nghệ như WebRTC, SocketIO và một số thư viện trên nền tảng Flutter còn ít tài liệu để nhóm có thể tham khảo và triển khai, do đó ít nhiều ảnh hưởng đến tiến độ của nhóm.  Phần mềm có thể đáp ứng được nhu cầu cơ bản của người dùng như đăng nhập, đăng ký, khôi phục mật khẩu, Chat nhóm, Chat với bạn bè, tìm kiếm tin nhắn, nhóm hoặc bạn bè, kết bạn, chặn người dùng, mời bạn bè vào nhóm, thực hiện Video Call.

         Các tính năng như Realtime Chat, Video call được nhóm tự phát triển trên các công nghệ mã nguồn mở, do đó không phát sinh chi phí trong quá trình triển khai và sử dụng.  Giao diện phần mềm đơn giản, dễ sử dụng, đồng nhất trên các phiên bản hệ điều hành, do đó người mới sử dụng phần mềm sẽ không mất quá nhiều thời gian để làm quen.