2011-08-09 2 views
4

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

ответ

4

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

После получения присутствия зонда от пользователя, сервер контакта
следует отвечать следующим образом:

Если пользователь не находится в реестре контакта с подпиской состояния " From "," From + Pending Out "или" Both "(как определено в разделе« Подписки »(раздел 9)), сервер контакта ДОЛЖЕН вернуть строфу присутствия типа« ошибка »в ответ на датчик присутствия .

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

0

No.

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

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

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

6

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

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

IQ:

<iq from='[email protected]' 
to='[email protected]/BANL07R9AME9X' type='get' id='e2e1'> 
<ping xmlns='urn:xmpp:ping'/> 
</iq> 

Ответ:

<iq from="[email protected]/BANL07R9AME9X" type="result" xml:lang="en" to="[email protected]/BANL07R9AME9X" id="e2e1" /> 

  • "user2" pings "user1" (user1 отсутствует.Реакция результатов звона в типе = ошибка)

IQ:

<iq from='[email protected]' 
to='[email protected]/BANL07R9AME9X' type='get' id='e2e1'> 
<ping xmlns='urn:xmpp:ping'/> 
</iq> 

Ответ:

<iq from="[email protected]/BANL07R9AME9X" type="error" xml:lang="en"  to="[email protected]/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> 
+0

Стоит отметить, что это работает только если у вас есть ресурс пользователя2, что в некоторых случаях неизвестно. –

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

  • Нет связанных вопросов^_^