【问题标题】:How to manage PubSub notifications send while offline in XMPP?如何在 XMPP 中管理离线时发送的 PubSub 通知?
【发布时间】:2018-03-10 02:49:58
【问题描述】:

如何在 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)如何知道谁(发布者)在节点中发送了这条消息?

我刚刚浏览了来自here 的 Smack 和 PubSub 的文档 和here 但没有找到与我的查询相关的解决方案。那么有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: xmpp publish-subscribe smack


    【解决方案1】:

    1) 如何使用 pubsub 跟踪在线和离线消息 啪啪啪?

    我建议使用 PubSub 项目 ID。

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

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

    如果您想了解自从您从 PubSub 节点收到最后一项后的所有新项,您通常会记住最后一项的 ID,并使用它来查询 PubSub 节点上的所有新项。不幸的是,(目前)没有办法在 PubSub 节点中查询某个 ID 之后的较新项目。

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

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

    不幸的是,没有可靠的方法来获取发布项目的实体的 JID。这也可以通过扩展 XEP 来解决。

    【讨论】:

      猜你喜欢
      • 2012-05-23
      • 2015-07-27
      • 2015-06-02
      • 2016-09-22
      • 2012-10-26
      • 2013-04-12
      • 2011-10-01
      • 2023-03-22
      相关资源
      最近更新 更多