🧩 一、项目简介
这是一个基于 C++ 开发的聊天室后台服务器系统 ,采用微服务架构,支持用户注册、登录、好友管理、消息收发、文件上传下载、语音转文字等功能。
🧩 二、功能模块概览
1. 用户相关
- 用户名/手机号注册与登录
- 短信验证码获取
- 用户信息获取与修改(头像、昵称、签名、手机号)
2. 好友相关
- 好友列表获取
- 搜索用户、发送好友申请
- 处理好友申请(同意/拒绝)
- 删除好友
3. 聊天相关
- 获取聊天会话列表(单聊/群聊)
- 创建多人会话
- 获取群成员列表
- 发送消息(文字、图片、文件、语音)
- 获取历史消息(最近N条、按时间段、关键词搜索)
4. 文件相关
- 单文件/多文件上传与下载
- 头像、图片、语音文件存储
5. 语音识别
- 将语音消息转换为文字
🧩 三、微服务拆分
| 服务名称 | 功能描述 |
|---|---|
| 🚪 网关服务 | 接收客户端请求,鉴权,分发到子服务 |
| 👤 用户管理 | 用户注册、登录、信息修改 |
| 👥 好友管理 | 好友列表、申请、处理、搜索、会话管理 |
| 📁 文件管理 | 文件上传、下载、存储 |
| 💬 消息管理 | 消息存储、历史消息、消息搜索 |
| 🔁 转发管理 | 消息转发、目标用户识别 |
| 🎤 语音转换 | 调用语音识别SDK,语音转文字 |
🧩 四、通信方式
1. HTTP 通信
- 用于客户端主动请求(如登录、发消息、上传文件)
- 使用 Protobuf 格式传输数据
2. WebSocket 通信
- 用于服务端主动推送(如新消息、好友申请通知)
- 客户端建立长连接并发送身份验证
🧩 五、使用的技术栈
| 类别 | 技术/框架 |
|---|---|
| 网络通信 | brpc, cpp-httplib, websocketpp |
| 序列化 | protobuf |
| 数据库 | MySQL(业务数据), Redis(会话管理) |
| 消息队列 | RabbitMQ |
| 搜索存储 | Elasticsearch(消息搜索) |
| 日志 | spdlog |
| 测试 | gtest |
| 部署 | Docker, CMake |
| 云服务 | 百度语音识别、阿里云短信 |
🧩 六、部分接口定义(Protobuf示例)
1. 用户注册请求
cpp
message UserRegisterReq {
string request_id = 1;
string nickname = 2;
string password = 3;
string verify_code_id = 4;
string verify_code = 5;
}
2. 发送消息请求
cpp
message NewMessageReq {
string request_id = 1;
string chat_session_id = 4;
MessageContent message = 5;
}
3. 文件上传请求
cpp
message PutSingleFileReq {
string request_id = 1;
FileUploadData file_data = 4;
}
🧩 七、服务发现与注册
每个子服务(如用户服务、好友服务)在启动时向 Etcd 注册自己的地址,网关通过服务名称(如 /service/user)发现可用服务实例。
🧩 八、总结
该项目是一个功能完整、架构清晰的分布式聊天系统 ,涵盖了从用户管理到实时通信、文件处理、语音识别等多个方面,适合学习C++服务端开发 、微服务架构 和实时通信系统的设计与实现。