基本理念
聊天系统里每个实体(用户、群组等)都需要有一个全局唯一的地址,一个合法的地址可以由名称和所在节点组成,格式如 name@node
这种结构。
- 结点主要用于标识地址所在服务器,可能包含:
- 用户结点,为每个用户维护一个消息接收队列
- 群组结点,按群成员,将群信息路由到用户结点
- 机器人节点,接收机器人信息,执行对应逻辑
- 第三方结点,执行外部对接等操作
- 等等其它结点
- 名称标识该地址在服务器上的具体个体。
安全
为每次登录创建会话对应的 aesKey,将传给外部的地址标识符做 AES 加密后返回,这样可以从杜绝用户遍历地址表导致的乱发消息。
底级接口
面向底层,相互不交叉,便于替换底层,随时进行数据源切换等
- 用户信息增删改查
- 群组信息增删改查
- 历史消息列表增删改查
- 通讯录增删改查
- 消息内容的存储,考虑效率及系统容量,相同内容的聊天消息尝试保存一条
- 商家、群组、第三方、机器人 等结点任务处理
- 实时消息路由及消息订阅
中级接口
面向业务,相互交差,例如接收或者发送消息同步更新最近联系人,提供给各内部应用的接口层
- 拉取最近联系人
- 按结点拉取历史聊天数据
- 拉群,群转交,群踢人等
- 发送各种类型的消息
- 查询修改用户头像昵称备注等信息
- 消息回执转发
高级接口
在二级接口的基础上添加会话过程,添加原始数据隐藏,直接提供给各种外部接入方
- 加密所有结点信息
- 实现聊天 session
- 通用评论组件
- 各种快捷回复
- 机器人组件