Chat Service
Dịch vụ Chat thời gian thực cho nền tảng GoodGo, xây dựng trên ASP.NET Core SignalR.
Tổng Quan
Chat Service cung cấp khả năng giao tiếp thời gian thực trong hệ thống microservices với:
- Giao tiếp thời gian thực - ASP.NET Core SignalR với WebSockets/SSE/Long Polling
- Khả năng mở rộng - Redis Backplane hoặc Azure SignalR Service
- Quản lý người dùng & nhóm - Phòng chat, ánh xạ user across devices
- Tích hợp AI - Chatbot thông minh với streaming response
- Hiệu năng cao - Giao thức MessagePack
- Khả năng phục hồi - Auto reconnect, Stateful Reconnect
Yêu Cầu
| Yêu cầu |
Phiên bản |
| .NET SDK |
10.0.101+ |
| Docker |
24.0+ |
| PostgreSQL |
16+ |
| Redis |
7+ |
Bắt Đầu Nhanh
1. Cấu Hình Môi Trường
2. Chạy với Docker
3. Chạy Local
Tính Năng Chi Tiết
A. Giao Tiếp Thời Gian Thực
| Tính năng |
Mô tả |
| SignalR Hub |
Hub trung tâm xử lý tất cả real-time connections |
| Multi-Transport |
Tự động chọn WebSockets → SSE → Long Polling |
| Streaming |
Hỗ trợ IAsyncEnumerable cho streaming AI responses |
B. Khả Năng Mở Rộng
| Giải pháp |
Use Case |
| Redis Backplane |
On-premise, multi-instance deployment |
| Azure SignalR Service |
Azure cloud, serverless scenarios |
| Sticky Sessions |
Fallback khi không dùng Azure SignalR |
C. Quản Lý Người Dùng & Nhóm
| Tính năng |
Mô tả |
| Groups |
Gom kết nối theo phòng chat |
| User Mapping |
Ánh xạ ConnectionId → UserId qua Claims |
| Persistent State |
Lưu trạng thái nhóm vào database |
D. Tích Hợp AI
| Tính năng |
Mô tả |
| AI Assistant |
Chatbot trong nhóm (trigger: @gpt) |
| Streaming Response |
Đẩy từng phần câu trả lời realtime |
| Context History |
Lưu lịch sử chat cho context AI |
E. Giao Thức MessagePack
F. Khả Năng Phục Hồi
| Tính năng |
Mô tả |
| Auto Reconnect |
Client tự động kết nối lại |
| Stateful Reconnect |
Buffer dữ liệu khi gián đoạn (.NET 8+) |
API Endpoints
HTTP REST APIs
| Method |
Endpoint |
Mô tả |
GET |
/api/v1/rooms |
Lấy danh sách phòng chat |
POST |
/api/v1/rooms |
Tạo phòng chat mới |
GET |
/api/v1/rooms/{id}/messages |
Lấy lịch sử tin nhắn |
POST |
/api/v1/rooms/{id}/participants |
Thêm thành viên |
SignalR Hub Methods
| Method |
Direction |
Mô tả |
SendMessage |
Client → Server |
Gửi tin nhắn |
JoinRoom |
Client → Server |
Tham gia phòng |
LeaveRoom |
Client → Server |
Rời phòng |
ReceiveMessage |
Server → Client |
Nhận tin nhắn |
UserJoined |
Server → Client |
Thông báo user mới |
Health Endpoints
| Endpoint |
Mục đích |
/health |
Trạng thái đầy đủ |
/health/live |
Liveness probe |
/health/ready |
Readiness probe |
Cấu Hình
Biến Môi Trường
| Biến |
Mô tả |
Mặc định |
ASPNETCORE_ENVIRONMENT |
Môi trường |
Development |
DATABASE_URL |
PostgreSQL connection |
- |
REDIS_URL |
Redis connection |
- |
AZURE_SIGNALR_CONNECTION |
Azure SignalR (optional) |
- |
OPENAI_API_KEY |
OpenAI API key (optional) |
- |
appsettings.json
Triển Khai
Docker Build
Kubernetes
Xem ARCHITECTURE.md để biết chi tiết cấu hình Kubernetes với Sticky Sessions.
Tài Liệu Tham Khảo
Giấy Phép
Độc quyền - GoodGo Platform