本文介绍拉取消息的流程和相关接口。

AIMSDK采取推拉结合的方式同步消息。在线时消息通过同步协议从服务端推送到端上,当离线的数据有积压(超过一定的条数或时间)服务端不再推送历史离线消息,由端上主动拉取。

拉取消息流程

一次拉取消息流程分为两步。

  1. 拉取本地消息,返回本地连续数据,如果返回结果少于请求数,则发起下一步。
  2. 拉取远端消息,补全上一步不足的消息。
一次拉取消息流程

相关接口

目前拉取消息的接口有4个,所有接口保证消息的连续性。

  • ListPreviousLocalMsgs:拉取连续的历史本地消息。
  • ListPreviousMsgs:拉取连续的历史远端消息。
  • ListNextLocalMsgs:拉取连续的最新的本地消息。
  • ListNextMsgs:拉取连续的最新的远端消息。

接口说明

  • 拉取消息的接口分类有2个纬度:拉取的方向和是否本地。2个纬度
  • 调用入参cursor表示时间游标,通常和消息的创建时间一致。
    • 最新时间使用AIM_MAX_MSG_CURSOR。
    • 通常取上一次拉取结果的最后一条消息的创建时间(createdAt)作为下一次API调用的cursor。
    • 拉取的数量(count)最多支持每次100个。
  • 调用成功返回连续的消息列表(msgs)和是否还有更多消息(has_more)标志。
    • has_more为false时,表示会话没有更多的消息。业务方根据has_more标记来判断是否要发起下一次拉取。
    • 消息列表会包含请求的createdAt等于cursor的消息,业务方需要去重。
  • Remote调用失败(包括网络超时情况)返回不连续的本地消息列表(二纬数组),每段保证消息连续。调用失败