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

标签 xmpp publish-subscribe smack

如何在 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但没有找到与我的查询相关的解决方案。那么有人可以帮我解决这个问题吗?

最佳答案

1) how to keep track of online and offline message in pubsub using smack?



我建议使用 PubSub 项目 ID。

2) is it possible to get unread message count in pubsub using smack? if yes then how to achieve it?



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

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

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

3) how to know that who(publisher) send this message in a node?



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

关于xmpp - 如何管理在 XMPP 中离线时发送的 PubSub 通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46467802/

相关文章:

android - XMPP 和安卓

linux - 在AWS服务器(centOS服务器)安装openfire

docker - vertx EventBus 能否用作聊天应用程序的 "Redis Pub/Sub"

javascript - 如何在pubnub发布和订阅方法中显示实时时钟

xmpp - 如何在 Smack 中正确收听 MultiUserChat?

java - 通过 Smack android api 添加新用户到 ejabberd

java - 尝试注册 XMPP

ios - 属性(property)有先前的声明

javascript - AngularJS 和 Autobahn.js WAMP 实现

android - 如何在 XMPP SMACK 库中获取服务器时间