2016-05-31 1 views
0

Будучи новым для XMPP и Java (я - iOS-разработчик), следуя некоторому учебному пособию, мне удалось написать серверный компонент (Openfire) и клиентское приложение iOS (используя iOS xmppframeowrk от robbiehanson). Я смог отправить и получить сообщение от и от компонента < -> клиент iOS. Вот абстрактный код:Пространство имен компонентов Openfire XMPP в getChildElement в пакете

Отправка присутствия от iOSclient приложения к серверному компоненту:

XMPPPresence *presence = [XMPPPresence presence]; 
[presence addAttributeWithName:@"to" stringValue:serverComponentJid]; 
NSXMLElement *someInfo = [NSXMLElement elementWithName:@"someInfo" 
               stringValue:@"xyz"]; 
[presence addChild:someInfo]; 
[_xmppStream sendElement:presence]; 

Получение пакета в серверном компоненте:

if (packet instanceof Presence){ 
     org.xmpp.packet.Presence recvPresence = (Presence) packet; 

Element theInfo = recvPresence.getChildElement("someInfo", "***what_shoud_be_the_namespace_here***"); 
System.out.println("Some info in the presence as " + theInfo.attributeValue("someInfo")); 

я могу распечатать пакет и увидеть someInfo. Когда я передаю «» в пространстве имен, я могу получить его правильно, что понятно. Однако я до сих пор не понимаю, что и как использовать пространство имен в xmpp. Любой проводник, tut, link, ref или ответы, пожалуйста,

+0

UPDATE: Отредактированные вопрос. Если я отправлю пустую строку, я могу получить дочерний элемент. например Element theInfo = recvPresence.getChildElement ("someInfo", "") ;. Однако мне по-прежнему нужна информация о понимании пространства имен xmpp. Любые ссылки ссылок и т. Д. – SaffronState

ответ

0

Пространства имен используются для определения «использования/объема» Stanza (Packet). Они используются для определения функциональности и связывания действий (парсер, список и т. Д.), Поэтому любой API сможет добавлять поведение (по умолчанию или настраивать) на основе tagName и пространства имен.

Таким образом, пространство имен используется как зарезервированный ключ для протокола.

С помощью пользовательских пространств имен можно определить пользовательский IQ (или что-то еще) и настроить пользовательский логический/парсер и т. Д., Чтобы запустить exaclty, когда захотите, и получить n настраиваемых действий по своему усмотрению.

Официальные документы:

https://datatracker.ietf.org/doc/rfc6120/?include_text=1

И еще:

http://xmpp.org/extensions/index.html

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