Добавление или редактирование контакта. При отсутствии контакта в ростер-листе контакт будет добавлен, при наличии отредактирован.
Добавление / корректировка. Клиент посылает следующий пакет.
<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>