我像往常一样在互联网上搜索使用strophe或其中一个插件查找给定功能的文档。在这种情况下:https://github.com/strophe/strophejs-plugins/blob/master/archive/strophe.archive.js。 可能是RSM上的规范有点过头,但基本上,如果使用这个插件,如何在一段时间内获得用户和另一个用户之间的所有消息。 我发现这是唯一可用的示例代码:https://groups.google.com/forum/#!searchin/strophe/RSM/strophe/BjHUyxb-sYI/Ow-7ELNxNQoJ
另一方面,由于缺乏当前的开发和强大的文档,插件和什么不是,这几乎没有人使用了?
答案 0 :(得分:2)
在这里:在调整了我链接的代码之后,我设法让它工作了。我不想(目前)限制结果集,但第二个参数和rsm变量就是为了这个。 此外,一旦获得集合,就会有回调,您可以迭代集合并获取消息。 Somecallback应该处理消息。这里需要Strophe RSM插件,我认为归档插件在内部。
connection.archive.listCollections(fullJID, null, fromDate, function (collections, responseRsm) {
//Loop the collections
for (var int = 0; int < collections.length; int++) {
var lastCollection = collections[int];
rsm = new Strophe.RSM({});
lastCollection.retrieveMessages(rsm, function (messages, responseRsm) {
someCallback(fullJID, messages);
});
}
});
请注意,原始插件没有fromDate参数。我需要它将它添加到列表元素,因此它只能从该日期检索。
listCollections: function(jid, rsm, fromDate, callback) {
var xml = $iq({type: 'get', id: this._connection.getUniqueId('list')}).c('list', {xmlns:Strophe.NS.ARCHIVE, 'with': jid, 'from':fromDate});