如何使用 stanza.js 检索两个用户之间的 50 多条历史消息?

问题描述

我目前正在使用 React 和 Stanza.js 构建聊天应用程序。 我可以使用以下方法查询两个用户间的消息:

client.searchHistory([self@hostname],{with: [target@hostname]})

然而,这只会给我这两个用户之间最早的 50 条消息,并且这个客户端方法的选项只有“with: string,start: date,and end: date”的参数,而不管什么这些设置为仅返回 50 条消息。

是否有不同的客户端方法可用于在支持分页请求的两个用户之间查询消息?

这是我应该用来允许用户通过在聊天时间轴中向上滚动来检索历史文本的正确客户端方法吗?

解决方法

不幸的是,我错过了一个将 MAM 选项描述为扩展 MAM 查询的界面。

为了对两个用户之间交换的所有消息进行分页请求,您可以这样做.. client.searchHistory([self@hostname],{with: [target@hostname],pagination: {[before]: lastQueryId,max: 25}});

其中 [before] 将是一个在 "" 处初始化的字符串,并且在所有后续请求中将替换为列表中返回的第一个元素的节查询 id。

查询结果还将返回“完成”的值,这将是一个布尔值,让您知道您是否已到达第一条消息。