2014-09-10 1 views
0

Я использую SmackAPI для передачи пользовательских пакетов IQ между двумя Java-приложениями. Сервер XMPP является локальной установкой OpenFire. В принципе, отправка и получение этих пакетов работает нормально. Но теперь я хочу отправить нескольким получателям. Для сообщений это можно сделать очень легко, используя класс MultipleRecipientManager. Но я не знаю, как отправлять пользовательские IQ нескольким получателям, не отправляя их несколько раз. Я попытался использовать MultipleRecipientManager как обычные сообщения, но это не работает. Добавление расширения (MultipleAddresses) к настраиваемому объекту IQ не работает и жесткая кодировка адресов в методе getChildElementXML также не работает.Как я могу отправить IQ нескольким получателям с помощью Smack, не отправляя их несколько раз?

Я всегда получаю сообщение об ошибке с сервера xmpp. Он сообщает, что услуга недоступна. Я думаю, проблема в том, что сервер не знает мой пользовательский IQ, но как я могу это изменить?

Расширенная адресация Stanza поддерживается моей установкой Openfire. Но похоже, что он работает только для обычных сообщений.

Надеюсь, кто-то знает, как это решить.

С наилучшими пожеланиями Стефан

+0

Извините, полностью OT, но ... best Название, которое я видел в течение длительного времени, хотя и полностью прочитано из контекста. –

ответ

1

Для сообщений, это может быть сделано очень легко при помощи MultipleRecipientManager класса. Но я не знаю, как отправить пользовательские IQ нескольким получателям, не отправляя их несколько раз.

Невозможно передать подход, используемый MultipleRecipientManager для IQ. Вы должны отправить их несколько раз.

Ваш вопрос заставляет задуматься, если у вас нет недостатка дизайна в вашей реализации. Получатель IQ типа «get» или «set» должен быть подтвержден получателем. Это также является причиной того, что XEP-33 был указан только для работы с сообщениями. Теоретически вы можете использовать атрибут «from» для отслеживания того, что у каждого получателя есть IQ с определенным идентификатором. Но я думаю, это не сделано, потому что это добавляет сложности к протоколу для небольшого выигрыша.

В любом случае, похоже, что вам не нужны результаты IQ, так почему бы не использовать сообщения вместо этого?

+0

Хорошо, я не знал, что невозможно признать Stanzas с XEP-33. Я подумаю о том, как использовать сообщения для данных, где нужны многоадресные рассылки, и использовать строфы IQ, когда мне нужны подтверждения. Спасибо за помощь. – Bianconeri1988

+0

Никто не мешает вам подтвердить строфы сообщения (я полагаю, вы говорите о сообщениях stanzs). Просто ответы (успех/ошибка) ** требуются ** по спецификации для IQ. – Flow