我正在使用以下代码检索聊天记录。在视图中,我需要显示消息的滴答声,无论是否传递。但是,已传递和未传递消息的消息节结构相同。因此,如何在不设置外部数据库的情况下区分已传递和未传递的邮件。
这是我在service.ts文件中的代码:
this.Connection.mam.query(from, {
with: to,
before: '',
max: '10',
onMessage: (message) = > {
console.log(message);
},
onComplete: (response) = > {
console.log('Got all the messages');
}
});
我得到的输出是:
<message
xmlns="jabber:client" to="sashank@localhost/9158846669251631426100" from="sashank@localhost">
<result
xmlns="urn:xmpp:mam:2" id="1546597812368545">
<forwarded
xmlns="urn:xmpp:forward:0">
<message
xmlns="jabber:client" xml:lang="en"
to="murali@localhost" from="sashank@localhost/18846625227131105454610" type="chat" id="0777d27e-7238-42ba-9063-78185c05e76d">
<archived
xmlns="urn:xmpp:mam:tmp" by="sashank@localhost" id="1546597812368545">
</archived>
<stanza-id
xmlns="urn:xmpp:sid:0" by="sashank@localhost" id="1546597812368545">
</stanza-id>
<request
xmlns="urn:xmpp:receipts">
</request>
<body>Hello buddy! How are you</body>
</message>
<delay
xmlns="urn:xmpp:delay" from="localhost" stamp="2019-01-04T10:30:12.368545Z">
</delay>
</forwarded>
</result>
</message>
这是已传递的消息,未传递的消息在节结构中看起来也一样,没有额外的属性。谢谢!
答案 0 :(得分:0)
这是正确的。他们看起来一样。 MAM存储仅存储“消息”节的提要,包括带有正文,状态消息等的消息。因此,您需要获取此提要,然后在客户端进行后处理-获取带有正文的消息,然后获取状态并将其映射到他们的信息。然后才将处理后的数据显示给最终用户。
这不是一种很干净的方法,但这就是MAM的工作原理