SDKsWASM
加载历史消息
使用 WASM SDK 分页读取会话历史消息。
在用户打开聊天会话窗口时,可调用 getAdvancedHistoryMessageList() 获取第一页历史消息;当用户向上滚动需要加载更早的历史记录时,将当前已加载消息中最早一条的 clientMsgID 作为下一页的锚点游标继续拉取。
参数说明
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
conversationID | string | 是 | 要读取历史消息的会话 ID。 |
startClientMsgID | string | 是 | 分页锚点消息 ID;第一页传空字符串。 |
count | number | 是 | 本次读取的消息数量。 |
viewType | MessageViewType | 是 | 消息查看方向;读取历史时使用 MessageViewType.History。 |
import { MessageViewType } from '@openim/wasm-client-sdk';
const { data: page } = await openimsdk.getAdvancedHistoryMessageList({
conversationID,
startClientMsgID: oldestMessage?.clientMsgID ?? '',
count: 30,
viewType: MessageViewType.History,
});
prependMessages(page.messageList);返回结果
Promise 成功后,data 是 AdvancedMessageListResult:
| 字段 | 类型 | 说明 |
|---|---|---|
messageList | MessageItem[] | 当前页消息,消息字段见消息概览。 |
isEnd | boolean | 是否已经到达当前加载方向的历史边界。 |
errCode | number | 本次历史读取结果携带的状态码。 |
errMsg | string | 与 errCode 对应的状态说明。 |
当接口返回时,建议先检查 errCode 状态码,确认成功后再将 messageList 追加或前插至本地消息列表中。为避免重复渲染,建议在合并时使用 clientMsgID 进行去重。该操作为只读查询,不会触发新消息推送事件。
这个页面有帮助吗?