go-hichat-api是HiChat的2.0版本,其模块拆分,使用微服务架构,功能点:优化社交模块、记录重构聊天存储项目、添加用户在线/离线,消息已读/未读状态、添加动态空间模块。
- 调整为微服务架构
- 项目前后端分离
- 优化社交模块,添加或者好友申请,管理员,以及相应消息实时通知
- 优化文件消息存储方式
- 重构聊天模块,修复内存泄漏问题,优化消息流,解耦和异步话聊天模块
- 优化心跳检查,添加消息可靠性ack确认机制
- 完善聊天记录持久化
- 添加消息已读/未读功能
- 添加好友在线状态
- 添加动态空间模块,点赞,评论,屏蔽动态等
生成代码模块rpc/api/model(user为例)
- 创建proto
- 生成代码
goctl rpc protoc ./user.proto --go_out=. --go-grpc_out=. --zrpc_out=.
- 生成数据库crud(mysql)
goctl model mysql ddl -src="./deploy/sql/user.sql" -dir="./apps/user/models/" -c
- 生成数据库模型(mongo)
goctl model mongo --type chatLog --dir ./apps/im/models/
- 生成api
goctl api go -api apps/user/api/user.api -dir apps/user/api -style gozero
- token验证方式
通过http header传递 例如: GET /v1/user/detail HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
MongoDB:
docker run -d \
--name mongo \
-p 27017:27017 \
-e MONGO_INITDB_ROOT_USERNAME=root \
-e MONGO_INITDB_ROOT_PASSWORD=hichat2 \
-v "/Users/iceymoss/docker-volume/mongo-data:/data/db" \
--restart always \
mongo:4.0
直接运行hichat2.sh启动
./hichat2.sh