2013-12-17 2 views
5

Как узнать, что сообщение доставляет другому пользователю, используя и ejabberd, мы используем класс XEP-0184 для отправки сообщений, мы отправляем запрос на получение при отправке с сообщением, но не получили никакого ответа.Как получить подтверждение для отправки/получения сообщения в ejabbered/XMPP?

В моем запросе мне нужно настроить что-либо на сервере (или любые изменения в файле ejabberd.cfg) для этого или любого кода на стороне клиента, который нам нужно сделать.

ответ

2

Вы можете использовать XEP-0022 расширения событий Сообщений для достижения этой цели:

Вот ваше сообщение строфы формиата:

<message to='[email protected]' id='msgId-21102012,12:12:11'> 
    <body>How are you doing?</body> 
    <x xmlns='jabber:x:event'> 
    <offline/> 
    <delivered/> 
    <composing/> 
    </x> 
</message> 

на основе статуса receipnt, открытый огнь respone со статусом события сообщения. Посмотрите на расширение XEP-022.

+2

«XEP-0022» является устаревшим (хотя, конечно, полезно использовать некоторую реализацию сервера, например «ejabberd», чтобы получать уведомление о сохранении сообщения в автономном хранилище и т. Д.). – kostix

+0

@kostix Я использую сервер ejabberd, поэтому XEP-0022 будет работать с этим?Если у вас есть ссылка на версию объектива-c XEP-0022, пожалуйста, предоставьте нам –

5

Нет, XEP-0184 - это чисто клиентский протокол, поэтому на сервере нечего настраивать.

Среди причин вы не получаете какие-либо признает, что может быть:

  • Ваших клиентов просто не XEP-0184 включены.
  • В зависимости от библиотек XMPP, которые вы используете (на обоих клиентов — отправителем и приемником), отправитель может принять решение не даже квитанции запроса если он discovers (путем опроса возможностей партнёра), что оно имеет XEP-0184 выключен.

    Чтобы быть более ясным: XEP обычно предлагают реализации, чтобы проверить, поддерживается ли функция, определенная XEP, и не пытаться использовать ее, если она отсутствует. Не все библиотеки и клиент делают это, но некоторые делают. Это означает, что некоторые реализации могут выглядеть следующим образом: ОК, мне было предложено отправить запросы на получение доставки, поэтому

    1. Обнаружение службы на равных, с которыми я собираюсь связаться.
    2. Проверьте, включено ли оно XEP-0184.
    3. Если нет, я просто молча буду прикреплять запросы на получение.

    ли делает конкретная библиотека XMPP это сам по себе зависит от того, как «умного» это было сделано.

Если по XMPP Framework вы имеете в виду this library, пожалуйста, попробуйте прочитать его исходный код, чтобы увидеть, если это «умная» и просит пир для своих шапок, а затем проверяет, если XEP-0184 включен.

Также проверьте, можно ли включить ведение журнала потоков XML, обмен которыми осуществляется вашим клиентом. Проверка их - лучший способ отладить проблемы, связанные с XMPP.

Смежные вопросы