Một ứng dụng nhắn tin thời gian thực hiệu suất cao được xây dựng trên hệ sinh thái Java Spring Boot, tận dụng sức mạnh của WebSocket và bộ nhớ đệm Redis để đảm bảo trải nghiệm mượt mà.
chatapp-demo.mp4
- 💬 Chat Real-time: Gửi và nhận tin nhắn ngay lập tức.
- 👥 Group Chat: Tạo phòng chat nhóm không giới hạn thành viên.
- 🟢 Online Status: Theo dõi trạng thái hoạt động của bạn bè.
- 📜 Chat History: Lưu trữ lịch sử tin nhắn vào MySQL.
- ⚡ High Performance: Tối ưu hóa tốc độ truy xuất với Redis Cache.
Spring Boot 4.x:
- REST API cho quản lý người dùng và phòng chat
- WebSocket với giao thức STOMP
- Spring Security với xác thực JWT
- Spring Data JPA với MySQL
MySQL:
- Lưu trữ người dùng, phòng chat, tin nhắn
- Quan hệ giữa người dùng và phòng chat
- Lịch sử tin nhắn và metadata
Redis:
- Quản lý session cho WebSocket connections
- Theo dõi người dùng online
- Message queue cho gửi tin nhắn real-time
- Cache cho dữ liệu truy cập thường xuyên
WebSocket + STOMP:
- Giao tiếp hai chiều real-time
- Mô hình Pub/Sub cho chat nhóm
- Broadcasting tin nhắn
- Quản lý vòng đời kết nối
- JDK 21 trở lên
- MySQL 8.0+
- Redis 8.0+
Tạo database trong MySQL:
CREATE DATABASE chat_app;
Chỉnh sửa file src/main/resources/application.yml:
spring:
datasource:
url: jdbc:mysql://localhost:3306/chat_app
username: your_user
password: your_password
data:
redis:
host: localhost
port: 6379
./mvnw spring-boot:run
Dự án đã được cấu hình Docker Compose để bạn có thể khởi chạy toàn bộ môi trường (Node.js, MongoDB, Redis) một cách nhanh chóng.
- Đã cài đặt Docker Desktop
-
Tạo file
.env(như hướng dẫn ở trên). -
Chạy lệnh sau tại thư mục gốc:
docker-compose up --build
src/main/java/com/project/chat
├── common # Các kiểu dữ liệu
├── configuration # Cấu hình WebSocket, Redis, Security
├── constant # Các biến constant
├── controller # Xử lý Request & Message Mapping
├── dto # DTO
├── entity # Entity
├── exception # Handing Error
├── mapper # Convert to Response type
├── repository # Giao tiếp DB (JPA)
├── service # Logic nghiệp vụ
Contact: Nguyễn Đình Huy Hoàng - [ndhhoang.02052002@gmail.com]