# hanbo-push **Repository Path**: tomdev/hanbo-push ## Basic Information - **Project Name**: hanbo-push - **Description**: 分布式消息推送、IM服务 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 19 - **Created**: 2019-09-09 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 故事背景 最近看到一篇关于百万级推送架构的介绍,正好解决了之前一直想做但没有做的难题,于是乎在工作空闲之余手撸了一遍。[项目源码请移步这里](https://github.com/lmx1989219/push-core) # 系统概览 app接入除了接入restApi(push-admin)之外,还需要兼容connector(push-admin的client,用于和push-server通信)的通信协议。 ![](https://images.gitee.com/uploads/images/2019/0909/095642_2f1dd0f6_5197703.jpeg) # 演示 ## 1.创建开发者账号 ![注册开发者账号](https://images.gitee.com/uploads/images/2019/0909/095642_0578d7e7_5197703.jpeg) ## 2.创建app # ![创建app](https://img-blog.csdnimg.cn/20190501165628526.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xteDE5ODkyMTk=,size_16,color_FFFFFF,t_70) ### APP设备注册 # ![](https://images.gitee.com/uploads/images/2019/0909/095642_1574a2af_5197703.jpeg) ### APP鉴权 推送:鉴权成功后拿到真实的推送服务ip地址,然后建立长连接并发起注册请求,后续等待后台推送消息即可。 IM:同上述流程,只不过前提需要建立好友、群组等关系,ok后就可以发起聊天了。![](https://images.gitee.com/uploads/images/2019/0909/095642_fac3ffdb_5197703.jpeg) ## 3.选择APP,点击发布消息 # ![消息列表](https://images.gitee.com/uploads/images/2019/0909/095642_ecd23d0e_5197703.jpeg) # ![发布消息](https://images.gitee.com/uploads/images/2019/0909/095643_fe0ed681_5197703.jpeg) ## 4.admin收到推送指令,下发给所有当前app关联的设备id # ![](https://images.gitee.com/uploads/images/2019/0909/095643_b43001a3_5197703.jpeg) ## 6.推送服务收到admin转发的推送指令,依次下发到注册设备的长连接上 # ![](https://images.gitee.com/uploads/images/2019/0909/095643_8f3d7521_5197703.jpeg) ## 7.客户端收到来自管理员的推送消息 # ![](https://images.gitee.com/uploads/images/2019/0909/095643_f1ba063a_5197703.jpeg) ## 架构图 app为移动设备,3rdparty为三方服务(一般是服务端)。 ![](https://images.gitee.com/uploads/images/2019/0909/095643_6d12b1b3_5197703.png) # 模块讲解 restApi(admin),开放给三方的功能接口。 > 开发者注册 > > app设备鉴权 > > 好友管理 > > 群组管理 > > 推送管理 connector > 连接pushServer的桥梁,内置在pushAdmin > > 自动发现服务 > 一致性hash路由 > > 客户端故障转移 router > 维护用户和连接的映射 > > 维护用户和服务的映射 pushServer > 注册连接 > > 推送消息 > > 路由转发 webProxy > 对connector做了一层封装,暴露websocket协议 ## 推送流程 红线代表推送流程 蓝线代表注册设备流程 ![](https://images.gitee.com/uploads/images/2019/0909/095643_b9ee5e53_5197703.png)