Чмок читать старые события - PullRequest
1 голос
/ 22 сентября 2010

У меня проблема с приложением, использующим Smack 3.1, и сервером, на котором работает openfire.После запуска приложения оно прочитает последнее сообщение на узле.Это не работает, так как сообщения анализируются, обрабатываются и помещаются в БД.Помимо отправки времени создания сообщения в полезной нагрузке, есть ли способ остановить это дублирование?(На самом деле, если есть хоть какой-то сигнал о том, что сообщение «израсходовано», было бы здорово)

1 Ответ

1 голос
/ 22 сентября 2010

Если вы имеете в виду pubsub, то вы можете настроить узел так, чтобы он не сохранял элементы с persist_items и max_items.

Если у вас нет контроля над созданием узла, тогда вы можете проверить наличие пространства имен задержки (jabber:x:delay и / или urn:xmpp:delay) в пакете

public void processPacket(Packet pkt) {
   DelayInformation delay = (DelayInformation)pkg.getExtension("x", "jabber:x:delay");
   if (delay != null)
      return; //Discard this packet
   delay = (DelayInformation)pkg.getExtension("x", "urn:xmpp:delay");
   if (delay != null)
      return; //Discard this as well
   //Otherwise this is a good packet
   ...
}

Вы также можете принять какое-то решение, изучив объект DelayInformation относительно продолжительности, причины и т. Д.

Если это PEP, то вы всегда будете публиковать последний элемент, и я думаю, что нет способа определить, было ли это задержано, а именно. в пакете нет информации о задержке.

Вам нужно либо получить ночных сборок , либо собрать свою собственную для поддержки pubsub. Я не думаю, что текущая версия Smack 3.1.0 поддерживает pubsub.

...