Skip to content

go-hichat-api是HiChat项目的2.0版本,对其模块拆分,使用微服务架构,功能点:优化社交模块、重构聊天记录存储、添加用户在线/离线,消息已读/未读状态 、添加动态空间模块。

License

Notifications You must be signed in to change notification settings

iceymoss/go-hichat-api

Repository files navigation

go-hichat-api

go-hichat-api是HiChat的2.0版本,其模块拆分,使用微服务架构,功能点:优化社交模块、记录重构聊天存储项目、添加用户在线/离线,消息已读/未读状态、添加动态空间模块。

调整点

  • 调整为微服务架构
  • 项目前后端分离

优化点

  • 优化社交模块,添加或者好友申请,管理员,以及相应消息实时通知
  • 优化文件消息存储方式
  • 重构聊天模块,修复内存泄漏问题,优化消息流,解耦和异步话聊天模块
  • 优化心跳检查,添加消息可靠性ack确认机制
  • 完善聊天记录持久化

新增功能点

  • 添加消息已读/未读功能
  • 添加好友在线状态
  • 添加动态空间模块,点赞,评论,屏蔽动态等

如何快速进行模块开发

生成代码模块rpc/api/model(user为例)

  1. 创建proto
  2. 生成代码

goctl rpc protoc ./user.proto --go_out=. --go-grpc_out=. --zrpc_out=.

  1. 生成数据库crud(mysql)

goctl model mysql ddl -src="./deploy/sql/user.sql" -dir="./apps/user/models/" -c

  1. 生成数据库模型(mongo)

goctl model mongo --type chatLog --dir ./apps/im/models/

  1. 生成api

goctl api go -api apps/user/api/user.api -dir apps/user/api -style gozero

  1. token验证方式

通过http header传递 例如: GET /v1/user/detail HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

需要的配置

mysql

redis

etcd

kafka

mongo

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

About

go-hichat-api是HiChat项目的2.0版本,对其模块拆分,使用微服务架构,功能点:优化社交模块、重构聊天记录存储、添加用户在线/离线,消息已读/未读状态 、添加动态空间模块。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published