概述
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)
职责:管理用户的好友关系和群组成员关系,提供添加、删除、查询等操作。
核心功能:
- 好友管理:
-
- 添加好友:发送好友申请,对方同意后建立好友关系
- 删除好友:解除好友关系
- 好友列表查询:获取所有好友列表
- 好友信息查询:查询指定好友的详细信息
- 好友状态管理:在线状态、免打扰状态等
- 群成员管理:
-
- 添加群成员:邀请用户加入群组
- 移除群成员:将成员踢出群组
- 群成员列表查询:获取群组所有成员列表
- 群成员信息查询:查询指定成员的详细信息
- 群成员角色管理:群主、管理员、普通成员等角色权限
- 群成员数量限制:不同群类型有不同的成员上限
技术要点:
- 好友关系和群成员关系数据存储在本地数据库
- 关系变更通过数据同步机制与服务端保持一致
- 支持批量操作,提升操作效率
- 关系变更会触发相关会话的更新