YouChat Backend GO 是一个基于 Hertz 框架开发的聊天应用后端服务。本项目采用现代化的技术栈和最佳实践,提供高性能、可扩展的即时通讯解决方案。🚀
- 基于高性能的 Hertz 框架构建
- WebSocket 实时通讯支持 ⚡
- 完整的用户认证系统 🔐
- 群组聊天功能 👥
- 消息持久化存储 💾
- 分布式架构支持 🌐
- 完整的日志系统 📝
- 支持文件上传和管理 📤
- 集成了多种中间件(pprof、cors、recovery、access_log、gzip等)
- 框架:Hertz
- 数据库:MySQL 🗄️
- 缓存:Redis 💨
- 消息队列:Kafka 📨
- 对象存储:OSS ☁️
- 认证:JWT 🔑
├── biz/ # 业务逻辑目录
│ ├── cerrors/ # 自定义错误定义
│ ├── chttp/ # HTTP 相关工具
│ ├── dal/ # 数据访问层
│ ├── handler/ # 请求处理器
│ ├── jwt/ # JWT 认证相关
│ ├── logger/ # 日志处理
│ ├── router/ # 路由配置
│ ├── service/ # 业务服务层
│ ├── socket/ # WebSocket 实现
│ └── utils/ # 工具函数
├── cmd/ # 命令行工具
├── conf/ # 配置文件
├── hertz_gen/ # Hertz 生成的代码
├── idl/ # 接口定义文件
└── template/ # 代码模板
- Go 1.23.6+
- MySQL
- Redis
- Kafka
- 对象存储服务(如阿里云 OSS)
# 复制配置文件示例并修改
cp conf/conf.yaml.example conf/conf.yaml
在 .env
文件中配置数据库连接信息:
APP_MYSQL_HOST=localhost
APP_MYSQL_PORT=3306
APP_MYSQL_USERNAME=your_username
APP_MYSQL_PASSWORD=your_password
go run cmd/gorm/main.go
go run cmd/gorm_gen/main.go
# 方式1:直接运行
go run main.go
# 方式2:构建后运行
sh build.sh
sh output/bootstrap.sh
# 使用 docker-compose 启动所有服务
docker-compose up -d
- 用户注册与登录
- 群组创建与加入
- 消息发送(单聊、群聊)
- WebSocket实时通信
- 用户搜索功能
- 好友添加功能
- 群组管理(删除、修改)
- 消息撤回功能
- 通知系统
- 文件上传/下载
- 其他类型消息的收发
make gen svc=your_service_name
biz/handler
: 请求处理、参数验证和响应返回biz/service
: 实际业务逻辑实现biz/dal
: 数据访问层,包含数据库操作biz/router
: 路由和中间件注册biz/utils
: 通用工具方法
项目包含完整的单元测试框架,可以运行以下命令执行测试:
go test ./...
- Fork 本仓库
- 创建您的特性分支 (
git checkout -b feature/AmazingFeature
) - 提交您的更改 (
git commit -m 'Add some AmazingFeature'
) - 推送到分支 (
git push origin feature/AmazingFeature
) - 打开一个 Pull Request
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解更多详细信息。
如有任何问题或建议,请提交 issue 或 pull request。
注意: 在使用本项目之前,请确保已经正确配置了所有必要的环境变量和依赖服务。