服务的主体功能为提供消息的在线转发和离线消息的获取。从产品侧角度,衍生出多平台的同步转发、互踢及群组的需求。功能上需要提供消息指定路由转发、是否持久化、在线离线机制、心跳包、通知送达、授权验证等。从技术层次上划分,网络层提供长连接/短连接的服务,路由层提供转发,存储层提供持久化。额外的产品需求,还包含第三方的推送和订阅服务。
整体结构如下图:
具体功能:
1、用户接入及消息流程
如下图,用户登陆获取授权,通过jwt token 接入websocket,发送心跳及消息,消息路由到指定的在线用户
2、离线消息
用户的消息除了特殊可丢消息以外默认会入库,包含个人消息和组消息等,离线消息按照顺序存储。。为保证客户端能同步到离线的消息,客户端在启动或重连成功后,需调用离线接口直至空为止,表示客户端已取完所有离线。
3、推送
推送服务从中间件拉取消息,解析消息并补充相应的昵称等,组装消息调用第三方推送接口发送
4、订阅
支持第三方服务从订阅的群获取消息。目前订阅仅支持webhook,订阅服务通过实时的解析数据,调用相应的http接口进行消息的投递
第三方可通过http接口向指定群发送消息
5、统计
对活跃用户,用户消息,总用户数,当天新增用户量等进行统计
6、用户注册
添加用户时,生成唯一的id标识。
7、群成员管理
群成员添加删除及缓存处理,在服务维护成员关系,便于群消息的发送
8、用户管理系统
包含APP的用户同步,增删改查,用户关系
9、设置
用户的APP设置,如静音,屏蔽,拉黑关系等
10、登录
短信登陆、支持使用微信等第三方登录
11、多端的数据同步
含Android、ios、PC的数据同步
技术实现:
待续。。。