Delphi - сбориник статей

Управление ростер-листом


Добавление или редактирование контакта. При отсутствии контакта в ростер-листе контакт будет добавлен, при наличии отредактирован.

Добавление / корректировка. Клиент посылает следующий пакет.

<iq from='delphi-test@jabber.ru/тестовая' type='set' id='уникальный номер'> <query xmlns='jabber:iq:roster'> <item jid='новый/корректируемый JID' name='Имя контакта'> <group>Группа контакта</group> </item> </query> </iq>

После добавления/обновления информации о контакте на сервере, сервер оповещает все доступные ресурсы пользователя о внесенной информации. Оповещение служит сигналом для синхронизации данных клиентов о данном контакте с данными сервера.

Оповещение сервера:

<iq to='delphi-test@jabber.ru/тестовая' type='set' id='уникальный номер'> <query xmlns='jabber:iq:roster'> <item jid='новый/корректируемый JID' name='Имя контакта'> <group>Группа контакта</group> </item> </query> </iq>

Информация о результате:

<iq to='delphi-test@jabber.ru/тестовая' type='result' id='уникальный номер'/>

В любое время, пользователь удалить контакт из ростер-списка, для этого клиент должен послать запрос с атрибутом subscription элемента <item> равным значению 'remove':

<iq from=' delphi-test@jabber.ru/тестовая' type='set' id='roster_4'> <query xmlns='jabber:iq:roster'> <item jid='JID который удаляется' subscription='remove'/> </query> </iq>

Как и в случае с добавлением/корректировкой контакта сервер оповещает клиенты о удалении контакта. Указанием факта удаления служит атрибут subscription равным значению 'remove' в элементе <item>.

<iq to=' delphi-test@jabber.ru/тестовая' type='set' id='roster_4'> <query xmlns='jabber:iq:roster'> <item jid='JID который удален сервером' subscription='remove'/> </query> </iq>

Содержание раздела