此项目为前后端分离开发||后端接口文档链接
基于 gin 框架实现的一个简单聊天室后端,模拟了第三方登录
- 第三方登录颁发
oauth2 token(包含access token和refresh token) - 登录颁发
token - 对令牌进行解析获取认证信息与用户信息
- 用户的登录与邮箱验证码注册
- 第三方登录&&绑定邮箱
- 用户改名,改头像,改简介,改密码
- 获取用户信息
- 添加好友
- 删除好友
- 退出群组
- 删除群组(仅群主可操作)
- 踢人(仅群主可操作)
- 关键词模糊查找群组
- 创建群组
- 加入群组
-
实时发送消息,实时接收
-
离线状态下也可接收消息,上线后可获取
-
未读消息提示
-
获取历史聊天记录(群组和好友)
详情请见源码和接口文档
Gin 是一个用 Go (Golang) 编写的 Web 框架。
本项目功能不是很繁杂,所以用不上微服务,所以采用了写单体比较合适的gin框架
一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一
遇事不决还得是mysql,以后重构可以考虑mongodb
一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库
缓存存储还是选型最普遍的redis
一个面向分布式、多语言异构化服务架构的流量治理组件
我用来做限流
由Uber开源的分布式追踪系统
日志管理之余,使用jaeger做追踪系统
Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术的一个容器服务
容器用docker-compose部署
聊天室项目所用用户账号数据库
第三方登录绑定后将在此数据库中添加数据
user_auths
第三方用户与聊天室用户绑定
使用哈希表存储已经注册的用户信息
key 名称:user:[username]
使用 有序集合 存储用户 id 与用户名(QQ邮箱),方便通过 唯一id 获取用户名
key 格式:userID
key 格式:Oauth2User
好友消息 key 格式:friend:[id1]to[id2]
群组消息 key 格式: group:[group_id]
离线消息缓存,在被获取之后自动删除
key 格式: id
key 格式:mail:[username],120s后过期删除
日志记录
jaeger 链路追踪,可以更便捷地进行debug


























