# go-hichat-api **Repository Path**: hacker__007/go-hichat-api ## Basic Information - **Project Name**: go-hichat-api - **Description**: No description available - **Primary Language**: Go - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-29 - **Last Updated**: 2025-12-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # go-hichat-api go-hichat-api是HiChat的2.0版本,其模块拆分,使用微服务架构,功能点:优化社交模块、记录重构聊天存储项目、添加用户在线/离线,消息已读/未读状态、添加动态空间模块。 ### 调整点 * 调整为微服务架构 * 项目前后端分离 ### 优化点 * 优化社交模块,添加或者好友申请,管理员,以及相应消息实时通知 * 优化文件消息存储方式 * 重构聊天模块,修复内存泄漏问题,优化消息流,解耦和异步话聊天模块 * 优化心跳检查,添加消息可靠性ack确认机制 * 完善聊天记录持久化 ### 新增功能点 * 添加消息已读/未读功能 * 添加好友在线状态 * 添加动态空间模块,点赞,评论,屏蔽动态等 ## GO-ZERO框架配置搭建 ```sql # 安装 Go-Zero 核心工具 go install github.com/zeromicro/go-zero/tools/goctl@latest # 安装 protoc 编译器 (macOS) brew install protobuf # 安装 protoc 编译器 (Ubuntu) sudo apt install -y protobuf-compiler # 安装 Go 插件 go install google.golang.org/protobuf/cmd/protoc-gen-go@latest go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest # 验证安装 goctl -v protoc --version ``` ## 如何快速进行模块开发 生成代码模块rpc/api/model(user为例) 1. 创建proto 2. 生成代码 > goctl rpc protoc ./user.proto --go_out=. --go-grpc_out=. --zrpc_out=. > 3. 生成数据库crud(mysql) > goctl model mysql ddl -src="./deploy/sql/user.sql" -dir="./apps/user/models/" -c 4. 生成数据库模型(mongo) > goctl model mongo --type chatLog --dir ./apps/im/models/ 5. 生成api > goctl api go -api apps/user/api/user.api -dir apps/user/api -style gozero 6. token验证方式 > 通过http header传递 > 例如: > GET /v1/user/detail HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... ## 需要的配置 #### mysql ``` # 创建一个持久化目录 mkdir -p /docker/mysql/data # 写入配置 mkdir -p /docker/mysql/conf cat > /docker/mysql/conf/my.cnf < /docker/redis/conf/redis.conf < /docker/kafka/docker-compose.yml <