# WeChat
**Repository Path**: BeyondESH/wechat
## Basic Information
- **Project Name**: WeChat
- **Description**: WeChat 聊天系统是一个基于分布式架构的即时通讯应用,包含服务器集群和跨平台客户端。该系统模仿了微信的核心功能,采用现代C++技术栈构建,支持用户注册、登录、好友管理、即时消息通信等功能。项目采用微服务架构设计,确保系统的高可用性、可扩展性和可维护性。
- **Primary Language**: C++
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 18
- **Forks**: 3
- **Created**: 2025-01-19
- **Last Updated**: 2025-08-27
## Categories & Tags
**Categories**: im
**Tags**: Qt, Cpp
## README
# WeChat 聊天系统
## 项目介绍
WeChat 聊天系统是一个基于分布式架构的即时通讯应用,包含服务器集群和跨平台客户端。该系统模仿了微信的核心功能,采用现代C++技术栈构建,支持用户注册、登录、好友管理、即时消息通信等功能。项目采用微服务架构设计,确保系统的高可用性、可扩展性和可维护性。
## 项目结构图
```mermaid
graph TD
WeChat["WeChat系统架构"]
%% 主要组件
Server["服务器集群"]
Storage["数据存储"]
Client["客户端应用"]
%% 服务器集群子组件
GateServer["GateServer (网关服务器)"]
VerifyServer["VerifyServer (验证服务器)"]
StatusServer["StatusServer (状态服务器)"]
ChatServer["ChatServer (聊天服务器)"]
%% 数据存储子组件
MySQL["MySQL"]
Redis["Redis"]
%% 客户端子组件
QtClient["Qt客户端"]
Login["登录/注册模块"]
ChatUI["聊天界面"]
FriendManage["好友管理"]
MessageHistory["消息历史查询"]
%% 服务器功能
GateServerFunc["处理HTTP请求,验证码生成,用户注册登录"]
VerifyServerFunc["提供身份验证服务,验证码校验"]
StatusServerFunc["管理用户状态,ChatServer分配"]
ChatServerFunc["处理实时消息,好友管理,聊天历史"]
%% 数据存储功能
MySQLFunc["用户信息,好友关系,消息历史"]
RedisFunc["令牌存储,验证码缓存,临时状态"]
%% 连接关系
WeChat --> Server
WeChat --> Storage
WeChat --> Client
%% 服务器连接
Server --> GateServer
Server --> VerifyServer
Server --> StatusServer
Server --> ChatServer
GateServer --> GateServerFunc
VerifyServer --> VerifyServerFunc
StatusServer --> StatusServerFunc
ChatServer --> ChatServerFunc
%% 数据存储连接
Storage --> MySQL
Storage --> Redis
MySQL --> MySQLFunc
Redis --> RedisFunc
%% 客户端连接
Client --> QtClient
QtClient --> Login
QtClient --> ChatUI
QtClient --> FriendManage
QtClient --> MessageHistory
```
## 项目架构
### 服务器架构
WeChat 系统采用微服务架构,将不同功能拆分为独立的服务,通过gRPC和HTTP进行通信:
1. **GateServer** - 网关服务器
- 处理HTTP请求
- 用户注册与登录
- 验证码生成与发送
- 使用Boost.Beast实现HTTP服务器
2. **VerifyServer** - 验证服务器
- 验证码验证
- 提供gRPC接口供其他服务调用
- Redis缓存验证码
3. **StatusServer** - 状态服务器
- 用户状态管理
- ChatServer负载均衡
- Token认证与验证
- gRPC服务提供
4. **ChatServer** - 聊天服务器
- 实时消息处理
- 好友关系管理
- 消息历史记录存储
- 使用Boost.Asio实现TCP长连接
### 通信协议
- 服务间通信:gRPC (Protobuf)
- 客户端与网关通信:HTTP
- 客户端与聊天服务器通信:自定义TCP协议
### 数据存储
- **MySQL**:存储用户信息、好友关系、消息历史等持久化数据
- **Redis**:存储验证码、Token、临时会话信息等需要高速访问的数据
### 客户端架构
客户端采用Qt框架开发,实现跨平台支持:
- 使用Qt的信号槽机制实现异步通信
- 采用单例模式管理全局资源
- 基于TCP长连接实现消息的实时收发
- HTTP请求处理用户认证和注册
## 项目功能
### 用户管理
- 账号注册(用户名、密码、邮箱)
- 邮箱验证码验证
- 账号/邮箱登录
- 密码重置功能
### 好友管理
- 搜索用户
- 发送好友请求
- 接受/拒绝好友申请
- 好友列表显示
### 即时通讯
- 实时文本消息收发
- 消息历史记录查询
- 好友在线状态显示
- 未读消息提醒
### 系统功能
- 聊天服务器负载均衡
- 用户身份验证与授权
- 数据安全性保障
- 分布式服务自动发现与恢复
## 项目优势
### 技术优势
1. **高性能架构**:采用C++开发,结合Boost.Asio实现高并发处理能力
2. **分布式设计**:服务解耦,单个服务故障不影响整体系统运行
3. **可扩展性**:各服务可独立扩展,根据负载动态调整
4. **数据安全**:密码加密存储,通信加密,令牌验证
5. **代码优化**:使用现代C++特性,设计模式应用,提高代码质量
### 功能优势
1. **实时通信**:基于TCP长连接,保证消息实时性和可靠性
2. **跨平台支持**:Qt客户端支持Windows、Linux、MacOS
3. **用户体验**:简洁直观的界面设计,操作流程优化
4. **功能完整**:覆盖即时通讯系统的核心功能
5. **鲁棒性**:完善的错误处理和异常机制
## 技术栈
### 后端
- C++ 17
- Boost (Beast, Asio)
- gRPC & Protobuf
- MySQL Connector/C++
- Redis (hiredis)
- nlohmann/json
### 前端
- Qt 6
- C++
- QSS样式表
- Qt网络模块
### 构建工具
- CMake
- Ninja
- vcpkg (依赖管理)
## 联系方式
如有任何问题或建议,欢迎提交 Issue 或通过以下方式联系我:
- Email: 1989601704@qq.com
,