Как управлять отправкой уведомлений PubSub в автономном режиме в XMPP?

Как получить автономное сообщение в 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) как отслеживать онлайн-и офлайн-сообщение в pubsub с помощью smack?

2) можно ли получить непрочитанное количество сообщений в pubsub, используя smack? если да, то как его достичь?

3), как узнать, кто (издатель) отправляет это сообщение в node?

Я просто просмотрел документацию Smack и PubSub от здесь  и здесь, но не нашли решения, связанные с моими запросами. Так может ли кто-нибудь помочь мне решить эту проблему?

Ответ 1

1), как отслеживать онлайн-и офлайн-сообщение в pubsub, используя пороть?

Я бы предложил использовать идентификатор элемента PubSub.

2) можно ли получить непрочитанное количество сообщений в pubsub, используя smack? если да, то как его достичь?

У узлов PubSub нет подписанного количества непрочитанных сообщений.

Если вы хотите догнать все новые элементы, так как вы получили последний элемент из PubSub node, вы обычно запоминаете последний идентификатор элемента и используете его для запроса всех новых элементов на PubSub node. К сожалению, в настоящее время нет способа запросить PubSub node для новых элементов после определенного ID.

Но если вы подписаны на node, служба будет уведомлять вас о новых элементах, даже если вы в автономном режиме. И если ваш сервер сохраняет эти офлайн-сообщения для вас, вы получите их в конце концов.

3), как узнать, кто (издатель) отправляет это сообщение в node?

К сожалению, нет надежного способа для JID объекта, который опубликовал элемент. Это тоже возможно, возможно, было исправлено с расширением XEP.