首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取发送消息的MAM消息ID?

如何获取发送消息的MAM消息ID?
EN

Stack Overflow用户
提问于 2018-03-13 15:33:16
回答 1查看 918关注 0票数 3

我正在使用eJabberd服务器(启用MAM)和客户端库Strophe.js。客户端应用程序将固定数量的消息存储在本地存储中。

我从服务器收到的所有消息都包括元素<archived/><stanza-id/>,它们提供服务器端生成的ID:

代码语言:javascript
复制
<message 
    xmlns="jabber:client" to="aaa@example.net/8667085700924567016834" from="aaa@example.net">
    <result 
        xmlns="urn:xmpp:mam:2" id="1520510373346685">
        <forwarded 
            xmlns="urn:xmpp:forward:0">
            <message 
                xmlns="jabber:client" xml:lang="en" to="bbb@example.net" from="aaa@example.net/60965696931000870402419" type="chat">
                <archived 
                    xmlns="urn:xmpp:mam:tmp" by="aaa@example.net" id="1520510373346685"/>
                <stanza-id 
                    xmlns="urn:xmpp:sid:0" by="aaa@example.net" id="1520510373346685"/>
                <body>asdf</body>
            </message>
            <delay 
                xmlns="urn:xmpp:delay" from="example.net" stamp="2018-03-08T11:59:33.346685Z"/>
        </forwarded>
    </result>
</message>

我使用这些ID在每个MAM调用上获得固定数量的消息(使用RSM分页-在前面/后/max属性中)。例如:

代码语言:javascript
复制
params = {
    "before": "1520510373346685",
    "max": 10,
    onMessage: <some handler>,
    onComplete: <some handler>,
}
this.connection.mam.query(Strophe.getBareJidFromJid(this.myJid), params);

这给我提供了10条消息,然后是带有节id 1520510373346685的消息。

但是,我发送给的消息本质上没有这个ID,直到我发送它们并从MAM中检索为止。

我没有找到从服务器获取当前发送的消息ID的任何示例,在从客户端发送消息并由服务器接收消息后,Strophe不提供任何回调。

那么,这个问题--有什么方法可以为当前发送的消息获取服务器生成的消息ID (节-id/存档)吗?

也许我自己的方法是错误的-我应该生成我自己的it并将它添加到来自客户端的每条消息中吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-13 16:56:10

目前除了查询存档之外,没有指定任何机制。XMPP社区未来解决这个问题的一个突出想法是将发送碳反射回原始发件人,这将包括一个包含由归档分配ID的节ID元素。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49260090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档