Компоненты не имеют реестра, предоставленного сервером.Вы можете хранить свой собственный список в базе данных, если вам нужно.Некоторые приложения могут вообще обходиться без списка (когда они просто хотят появляться в сети для всех).
Чтобы отображаться в сети для всех (простейший подход, хранение в реестре не требуется):
- Когда вы получаете
<presence type="subscribe"/>
ответ с <presence type="subscribed"/>
- Когда вы получаете
<presence type="probe"/>
ответ с <presence/>
(или любым другим статусом, который вы хотите видеть как)
Для хранения реестра требуется немного больше работы, но он позволяет вам отслеживать, кому разрешено видеть ваше присутствие, и чье присутствие вы имеете право видеть.В некоторых случаях вы можете предпочесть использовать обычное клиентское соединение, если вы не хотите управлять собственным списком.Джек Моффитт написал пост в блоге об этой идее здесь: http://metajack.im/2008/08/04/thoughts-on-scalable-xmpp-bots/
Обратите внимание, что в этом посте я опускаю атрибуты «to» и «from» в строфах.Это зависит от компонента, чтобы поставить «до» и «от» на исходящих строф.Все входящие строфы будут иметь «до» и «от».
Отображение присутствия компонента для пользователей
Основные входящие строфы, с которыми вам нужно работать:
Получение присутствия пользователей в компоненте
Дополнительно, если выЧтобы компонент знал о присутствии пользователей, необходимо отправить им запрос на подписку: <presence type="subscribe">
.Вы должны быть готовы получить либо одобрение (<presence type="subscribed">
), либо отказ (<presence type="unsubscribed">
).
Когда компонент впервые подключается к сети, он может получить информацию о текущем присутствии пользователя, отправив <presence type="probe">
накаждый пользователь.Нет необходимости делать это более одного раза на пользователя во время работы компонента - сервер пользователя автоматически отправит вам обновления присутствия, если пользователь одобрит ваш запрос на подписку, как указано выше.