




Preview text:
lOMoAR cPSD| 58675420
Sơ đồ hoạt động:
Các chức năng phía server: Quản lý kết nối:
Theo dõi danh sách các client đang kết nối.
Tạo và đóng kết nối khi client tham gia hoặc rời khỏi ứng dụng. Xác thực người dùng:
Kiểm tra thông tin đăng nhập (username và password).
Cung cấp cơ chế đăng ký cho người dùng mới.
Sử dụng mã hóa bảo mật cho mật khẩu (ví dụ: bcrypt). Gửi và nhận tin nhắn:
Nhận tin nhắn từ client.
Phân tích và xử lý tin nhắn (ví dụ: kiểm tra nội dung, loại bỏ tin nhắn rác).
Gửi tin nhắn tới các client khác trong cùng một phiên chat hoặc nhóm. Quản lý nhóm chat: lOMoAR cPSD| 58675420
Tạo, sửa đổi và xóa nhóm chat.
Quản lý thành viên trong nhóm (thêm/xóa thành viên).
Gửi thông báo tới thành viên nhóm khi có hoạt động mới. Ghi log:
Ghi lại lịch sử trò chuyện để lưu trữ và có thể truy xuất sau này.
Ghi log các sự kiện quan trọng như đăng nhập, gửi tin nhắn, ngắt kết nối. Xử lý lỗi:
Phát hiện và xử lý lỗi trong quá trình kết nối hoặc gửi/nhận tin nhắn.
Cung cấp thông báo lỗi rõ ràng cho client.
Quản lý trạng thái người dùng:
Theo dõi trạng thái (online/offline) của từng người dùng.
Gửi thông báo khi một người dùng kết nối hoặc ngắt kết nối.
Các chức năng phía client:
Đăng nhập/Đăng ký:
Giao diện cho phép người dùng điền thông tin đăng nhập hoặc đăng ký tài khoản mới.
Hiển thị thông báo lỗi nếu thông tin không hợp lệ. Giao diện chat:
Hiển thị danh sách các cuộc trò chuyện và người dùng đang hoạt động.
Cung cấp giao diện cho việc nhập và gửi tin nhắn. Gửi tin nhắn:
Cho phép người dùng gửi tin nhắn văn bản.
Hỗ trợ các tính năng như gửi emoji hoặc tệp đính kèm (nếu cần). Nhận tin nhắn:
Cập nhật giao diện khi có tin nhắn mới từ server.
Thông báo cho người dùng khi nhận tin nhắn mới. Thông báo:
Cung cấp thông báo khi có tin nhắn mới hoặc sự kiện khác (như người dùng mới tham gia).
Hiển thị thông báo cho người dùng khi có thay đổi trạng thái (online/offline). Quản lý nhóm chat: lOMoAR cPSD| 58675420
Cho phép người dùng tham gia hoặc rời khỏi nhóm chat.
Hiển thị danh sách thành viên trong nhóm.
Cài đặt người dùng:
Cung cấp tùy chọn cho người dùng để thay đổi thông tin cá nhân (tên, ảnh đại diện, trạng thái).
Cho phép người dùng điều chỉnh cài đặt thông báo. Ngắt kết nối:
Cho phép người dùng đăng xuất khỏi ứng dụng.
Đảm bảo tất cả dữ liệu được lưu trữ an toàn trước khi ngắt kết nối. Các tinh huống:
1. Người dùng mới đăng ký: •
Người dùng truy cập giao diện đăng ký, điền thông tin (username, password, email).
Hệ thống kiểm tra tính hợp lệ của thông tin. •
Nếu hợp lệ, server lưu thông tin người dùng vào cơ sở dữ liệu và gửi phản hồi thành công.
2. Người dùng đã đăng nhập: •
Người dùng nhập thông tin đăng nhập và gửi yêu cầu tới server. •
Server xác thực thông tin và trả về trạng thái thành công hoặc thất bại. •
Nếu thành công, người dùng được chuyển đến giao diện chat chính. 3. Gửi tin nhắn: •
Người dùng soạn tin nhắn và nhấn nút gửi. •
Tin nhắn được gửi tới server. •
Server nhận và phân phối tin nhắn tới các client khác trong cùng phiên chat. 4. Nhận tin nhắn mới: •
Khi server gửi tin nhắn tới client, client cập nhật giao diện để hiển thị tin nhắn mới. •
Có thể hiển thị thông báo cho người dùng nếu họ không đang trong giao diện chat. 5. Ngắt kết nối: •
Người dùng có thể chọn đăng xuất hoặc ngắt kết nối. •
Server lưu lại trạng thái offline của người dùng và thông báo tới các client khác. 6. Tham gia nhóm chat: lOMoAR cPSD| 58675420 •
Người dùng có thể được mời tham gia nhóm chat hoặc tự tạo nhóm mới. •
Server quản lý danh sách thành viên và gửi thông báo đến các thành viên nhóm.
7. Khôi phục cuộc trò chuyện: •
Khi người dùng đăng nhập lại, server gửi lịch sử trò chuyện để hiển thị. •
Client cập nhật giao diện với lịch sử tin nhắn. Các thuật toán: 1. Thuật toán xác thực: •
Sử dụng phương pháp mã hóa (như bcrypt) để bảo vệ mật khẩu. •
So sánh mật khẩu đã mã hóa với mật khẩu người dùng nhập vào.
2. Thuật toán phân phối tin nhắn: •
Xác định người nhận tin nhắn dựa trên ID người dùng hoặc nhóm. •
Sử dụng hàng đợi (queue) để quản lý tin nhắn trong trường hợp có nhiều tin nhắn gửi đến cùng lúc.
3. Thuật toán lưu trữ tin nhắn: •
Sử dụng cơ sở dữ liệu để lưu tin nhắn với cấu trúc có thể truy vấn dễ dàng. •
Lưu trữ tin nhắn theo thời gian và theo người gửi. 4. Thuật toán tìm kiếm: •
Cho phép người dùng tìm kiếm tin nhắn hoặc người dùng bằng cách sử dụng từ khóa. •
Tối ưu hóa truy vấn cơ sở dữ liệu để tăng tốc độ tìm kiếm.
Cách tổ chức và quản lý dữ liệu: 1. Cơ sở dữ liệu: •
Sử dụng cơ sở dữ liệu quan hệ (MySQL, PostgreSQL) hoặc NoSQL (MongoDB) tùy thuộc vào nhu cầu. •
Tạo các bảng hoặc collections cho người dùng, tin nhắn, và nhóm. 2. Mô hình dữ liệu: • Người dùng: • user_id: ID duy nhất • username: Tên người dùng lOMoAR cPSD| 58675420 •
password: Mật khẩu (đã mã hóa) • email: Địa chỉ email •
status: Trạng thái (online/offline) • Tin nhắn: •
message_id: ID của tin nhắn • sender_id: ID người gửi •
receiver_id: ID người nhận (hoặc group_id nếu là nhóm) •
content: Nội dung tin nhắn •
timestamp: Thời gian gửi Nhóm chat: • group_id: ID của nhóm • group_name: Tên nhóm •
members: Danh sách ID của các thành viên 3. Quản lý kết nối: •
Sử dụng một cấu trúc dữ liệu (như hashmap) để theo dõi các kết nối hiện tại và trạng thái của người dùng. •
Cập nhật trạng thái khi có sự kiện kết nối hoặc ngắt kết nối. 4. Chính sách bảo mật: •
Áp dụng các biện pháp bảo mật cho dữ liệu nhạy cảm. •
Thực hiện kiểm tra quyền truy cập để đảm bảo chỉ người dùng hợp lệ mới có thể truy cập dữ liệu của họ.