IM 基础业务介绍(二)

76 阅读6分钟

概述

IM(Instant Messaging,即时通讯)业务是Wave系统的核心模块,负责维护用户身份认证、实时消息传输、会话管理、关系链维护等基础能力。整个业务架构采用分层设计,通过长连接(WebSocket)实现实时通信,配合收件箱机制保证数据一致性。

核心业务模块

1. 登录态管理(Authentication)

职责:维护用户身份认证状态,管理访问令牌的生命周期。

核心功能

  • Token管理:采用JWT(JSON Web Token)作为身份凭证,包含用户ID、租户ID、过期时间等信息。Token分为访问令牌(access token)和刷新令牌(refresh token),支持自动续期机制。
  • 账号注册与登录:支持多种登录方式(账号密码、SSO单点登录等),完成身份验证后获取Token。
  • 长连接认证:在长连接初始化时,必须传入有效的登录Token完成与服务端的建连。建连成功后,服务端会验证Token有效性,无效或过期时会触发Token刷新流程。
  • 退登处理:清理本地Token、用户信息、缓存数据,断开长连接,并通知各业务模块执行退登清理逻辑。
  • 踢下线处理:当用户在其他设备登录或Token被服务端主动失效时,接收踢下线通知,执行退登流程。

技术要点

  • Token存储在本地安全存储中,支持加密保护
  • 支持Token自动刷新,避免频繁重新登录
  • 长连接断开重连时自动携带最新Token

2. 数据同步(Data Synchronization)

职责:在用户登录成功后,同步服务端的会话、消息、好友、群组等数据到本地,并保持与服务端的数据一致性。

核心机制

  • 收件箱机制(Inbox Pattern) :采用收件箱模式进行数据同步。服务端维护一个全局的收件箱,所有需要同步的数据变更(新消息、会话更新、好友关系变更等)都会写入收件箱。客户端通过拉取收件箱的方式,按顺序获取并处理这些变更,确保数据同步的顺序性和完整性。
  • 增量同步:首次登录时进行全量同步,后续通过增量同步机制,只同步变更的数据,减少网络传输和本地处理开销。
  • 推送同步:服务端通过长连接推送数据变更通知,客户端收到通知后主动拉取最新数据,实现准实时的数据同步。

3. 配置管理(Configuration Management)

职责:管理用户的个人配置和系统配置,支持配置的读取、更新、同步。

核心功能

  • 个人配置:语言设置、时区设置、暗黑模式开关、消息通知设置、字体大小等用户个性化配置。
  • 系统配置:功能开关、业务规则配置、服务端下发的动态配置等。
  • 配置同步:用户配置变更后同步到服务端,多端登录时配置保持一致。
  • 配置持久化:配置信息存储在本地数据库或SharedPreferences中,应用重启后自动恢复。

4. 消息管理(Message Management)

职责:提供完整的消息生命周期管理,包括发送、接收、存储、查询、更新、删除、撤回等操作。

核心功能

  • 消息发送
    • 支持多种消息类型:文本、图片、视频、文件、语音、位置、系统消息等
    • 消息发送前进行内容校验和格式转换
    • 支持消息发送状态追踪(发送中、已发送、发送失败)
    • 失败消息支持重试机制
  • 消息接收
    • 通过长连接实时接收新消息推送
    • 支持离线消息推送(通过第三方推送服务)
    • 消息接收后更新本地缓存和数据库
    • 触发UI更新和通知提醒
  • 消息存储
    • 消息持久化到本地数据库
    • 采用LRU缓存机制缓存最近访问的会话消息
    • 支持消息分页加载,优化内存使用
  • 消息查询
    • 按会话ID查询消息列表
    • 支持关键词搜索、时间范围筛选
    • 支持消息定位(跳转到指定消息位置)
  • 消息更新
    • 支持消息编辑(部分消息类型)
    • 支持消息状态更新(已读、未读、已撤回等)
    • 支持消息扩展字段更新
  • 消息删除
    • 支持单条消息删除
    • 支持批量删除
    • 支持清空会话所有消息
  • 消息撤回
    • 支持撤回已发送的消息(有时间限制)
    • 撤回后本地和服务端同步更新消息状态
    • UI显示撤回提示

技术要点

  • 消息采用Content/Payload双层设计,Content用于应用内部处理,Payload用于网络传输
  • 消息内容支持加密传输和存储
  • 大文件消息采用分片上传/下载机制
  • 消息发送采用队列机制,保证发送顺序

5. 会话管理(Conversation Management)

职责:管理用户的会话列表,维护会话信息,处理会话的创建、更新、删除等操作。

核心功能

  • 会话创建
    • 单聊会话:与指定用户创建一对一会话
    • 群聊会话:加入或创建群组后自动创建群聊会话
    • 系统会话:系统通知、服务号等特殊会话类型
  • 会话更新
    • 更新会话最后一条消息
    • 更新会话未读数
    • 更新会话置顶状态、免打扰状态等
    • 更新会话草稿
  • 会话删除
    • 支持删除会话(软删除,保留消息记录)
    • 支持彻底删除会话(硬删除,同时删除消息记录)
  • 会话查询
    • 获取会话列表(支持排序:置顶、时间等)
    • 按会话ID查询会话信息
    • 支持会话搜索
  • 会话排序
    • 置顶会话优先显示
    • 按最后一条消息时间降序排列
    • 支持手动拖拽调整顺序(部分场景)

技术要点

  • 会话信息包含:会话ID、会话类型、会话名称、头像、最后一条消息、未读数、更新时间等
  • 会话列表采用增量更新机制,只更新变更的会话
  • 支持会话缓存,提升列表加载性能

6. 群成员/好友管理(Relationship Management)

职责:管理用户的好友关系和群组成员关系,提供添加、删除、查询等操作。

核心功能

  • 好友管理
    • 添加好友:发送好友申请,对方同意后建立好友关系
    • 删除好友:解除好友关系
    • 好友列表查询:获取所有好友列表
    • 好友信息查询:查询指定好友的详细信息
    • 好友状态管理:在线状态、免打扰状态等
  • 群成员管理
    • 添加群成员:邀请用户加入群组
    • 移除群成员:将成员踢出群组
    • 群成员列表查询:获取群组所有成员列表
    • 群成员信息查询:查询指定成员的详细信息
    • 群成员角色管理:群主、管理员、普通成员等角色权限
    • 群成员数量限制:不同群类型有不同的成员上限

技术要点

  • 好友关系和群成员关系数据存储在本地数据库
  • 关系变更通过数据同步机制与服务端保持一致
  • 支持批量操作,提升操作效率
  • 关系变更会触发相关会话的更新