如何在XMPP中离线时管理PubSub通知发送?

10
如何在PubSub中获取离线消息?使用Smack库。经过搜索,我找到了一个看起来像这样的答案:
// Create a pubsub manager using an existing XMPPConnection
PubSubManager mgr = PubSubManager.getInstanceFor(con);

// Get the node
LeafNode node = mgr.getNode("testNode");

List<? extends Item> items = node.getItems(100);

但是node.getItems(100)会返回最近的100个消息,这些消息可以是在线和离线的。

1)如何使用Smack在PubSub中跟踪在线和离线消息?

2)是否可以使用Smack在PubSub中获取未读消息计数?如果可以的话,如何实现?

3)如何知道是谁(发布者)在节点中发送了这个消息?

我刚刚查看了这里这里的Smack和PubSub文档,但没有找到与我的问题相关的解决方案。所以有人能帮我解决这个问题吗?

1个回答

3

1) 如何使用Smack跟踪PubSub中的在线和离线消息?

我建议使用PubSub项ID。

2) 是否可能使用Smack获取PubSub中的未读消息计数?如果可以,那么如何实现?

PubSub节点没有每个订阅的未读消息计数。

如果您想追赶自上次从PubSub节点接收到最后一条消息以来的所有新项目,则通常会记住最后一个项目的ID,并使用该ID查询PubSub节点上的所有更新项目。不幸的是,目前没有办法查询某个ID之后PubSub节点的新项目。

但是,如果您已订阅了节点,则即使您处于离线状态,服务也会通知您有关新项目的信息。如果您的服务器为您存储这些离线消息,则最终将收到它们。

3) 如何知道谁(发布者)在节点中发送了此消息?

不幸的是,目前没有可靠的方法来确定发布项的实体的JID。这也可能通过扩展XEP进行修复。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接