Openfire отправляет пустое (без штампа attr) расширение jabber:x:delay на smack

Я получаю автономное сообщение от сервера openfire, но оно содержит пустое расширение jabber:x:delay.

Сообщение, которое я получаю:

<message id="qU7N8-64" to="[email protected]" from="[email protected]/4847791" type="chat">
      <body>test message</body>
      <delay xmlns="urn:xmpp:delay"></delay>
      <x xmlns="jabber:x:delay"></x>
</message>

Это сообщение я получаю с библиотекой smack.

Но когда я подключаюсь к openfire с помощью Miranda IM, openfire отправляет расширение jabber:x:delay с данными.

Почему openfire отправляет пустой jabber:x:delay только в библиотеку smack?


person Nik    schedule 23.10.2012    source источник


Ответы (2)


Добавьте эту строку после соединения.

ProviderManager.getInstance()addExtensionProvider("x","jabber:x:delay", new DelayInformationProvider());
person Jun    schedule 12.04.2014

Openfire не делает ничего другого, поскольку не знает (или не заботится), какой клиент подключен. Пакет, который вы показываете, очень своеобразен, поскольку он содержит как устаревшую, так и текущую версии отложенной доставки, но в обеих отсутствуют обязательные атрибуты.

Попробуйте запустить с набором аргументов виртуальной машины -Dsmack.debugEnabled=true. Затем проверьте входящие необработанные пакеты на фактическое содержание сообщения. Скорее всего, происходит одно из двух.

  1. Время отсутствует, поэтому Миранда компенсирует это, заполнив его некоторым значением по умолчанию, например текущей датой.
  2. Формат времени не соответствует спецификации, поэтому синтаксический анализатор в Smack его пропускает.
person Robin    schedule 23.10.2012
comment
Smack не анализирует атрибут штампа в сообщении. - person Nik; 24.10.2012