Запрос на присутствие в XMPP - PullRequest
4 голосов
/ 09 августа 2011

По умолчанию присутствие XMPP публикуется для всех тех, кто подписан на этого человека. Можно ли отправить что-то вроде вызова iq, чтобы получить тег присутствия для идентификатора, которого нет в моем списке?

Ответы [ 4 ]

6 голосов
/ 31 мая 2013

Если вы хотите знать, подключен ли объект XMPP или нет, вы можете использовать XMPP Ping ( XEP-0199 ).Ниже приведен пример двух пользователей xmpp «user1» и «user2».Их нет в списке друг друга.Я использую ejabberd и PSI для приведенного ниже примера.

  • «user2» пингует «user1» (user1 онлайн)

IQ:

<iq from='user2@pdevdv3os18f.corp.intuit.net' 
to='user1@pdevdv3os18f.corp.intuit.net/BANL07R9AME9X' type='get' id='e2e1'>
<ping xmlns='urn:xmpp:ping'/>
</iq>

Ответ:

<iq from="user1@pdevdv3os18f.corp.intuit.net/BANL07R9AME9X" type="result" xml:lang="en" to="user2@pdevdv3os18f.corp.intuit.net/BANL07R9AME9X" id="e2e1" />

  • «пользователь2» пингует «пользователя1» (пользователь 1 находится в автономном режиме. Ответ пинга приводит к типу= ошибка)

IQ:

<iq from='user2@pdevdv3os18f.corp.intuit.net' 
to='user1@pdevdv3os18f.corp.intuit.net/BANL07R9AME9X' type='get' id='e2e1'>
<ping xmlns='urn:xmpp:ping'/>
</iq>

Ответ:

<iq from="user1@pdevdv3os18f.corp.intuit.net/BANL07R9AME9X" type="error" xml:lang="en"     to="user2@pdevdv3os18f.corp.intuit.net/BANL07R9AME9X" id="e2e1" >
<ping xmlns="urn:xmpp:ping"/>
<error type="cancel" code="503" >
<service-unavailable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
</error>
</iq>
4 голосов
/ 09 августа 2011

Я так не думаю.Взгляните на rfc , раздел 5.1.3.В частности, он говорит:

После получения от пользователя пробы присутствия сервер контакта
ДОЛЖЕН ответить следующим образом:

Если пользователь не включен в реестр контакта ссостояние подписки «От», «От + ожидание» или «Оба» (как определено в Состояниях подписки (раздел 9)), сервер контакта ДОЛЖЕН возвратить раздел присутствия типа «ошибка» в ответ на проверку присутствия.

Возможно, вы получите сообщение об ошибке или запрещено в ответе.

1 голос
/ 22 августа 2011

RFC говорит, что вам не разрешено получать присутствие с идентификатором, которого нет в вашем списке.

Но я считаю, что можно запросить присутствие, изменив сервер (еслисервер xmpp, который позволяет это)

0 голосов
/ 09 августа 2011

номер

  • Присутствие подписано, а не запрошено. К тому времени, когда вы получили ответ на ваш запрос, информация будет устаревшей.
  • Присутствие является личной информацией. Вы должны быть явно авторизованы, чтобы видеть это контактом.
...