2016-05-31 9 views
0

Als neu zu XMPP und Java (ich bin iOS dev) durch ein Tutorial folgen, ich habe eine Server-Komponente (Openfire) und Client iOS-App (mit robbiehanson ios xmppframeowrk) zu schreiben. Ich konnte Nachrichten an und von Komponente < -> iOS-Client senden und empfangen. Hier ist eine abstrakte Code:Openfire XMPP Komponente Namespace in getChildElement in Paket

von iOSclient App-Server-Komponente gesendet Präsenz:

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

Empfangen des Pakets in Serverkomponente:

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")); 

Ich kann das Paket drucken und den someInfo sehen. Wenn ich "" im Namespace übergebe, kann ich es korrigieren, was verständlich ist. Allerdings verstehe ich immer noch nicht, was und wie Namespace in Xmpp zu verwenden. Beliebige Anleitung, Tut, Link, Ref oder Antworten bitte

+0

UPDATE: die Frage bearbeitet werden. Wenn ich eine leere Zeichenfolge sende, kann ich das untergeordnete Element abrufen. wie Element theInfo = recvPresence.getChildElement ("someInfo", "") ;. Allerdings brauche ich noch einige Informationen zum Verständnis von Xmpp Namespace. Irgendwelche Ref .. Links etc – SaffronState

Antwort

0

Namespaces werden verwendet, um die "Nutzung/Umfang" einer Stanza (Packet) zu definieren. Sie werden zum Definieren von Funktionen und zum Binden von Aktionen (Parser, Listner usw.) verwendet, sodass jede API ein Verhalten (Standard oder benutzerdefiniert) basierend auf TagName und Namespace hinzufügen kann.

Also ein Namespace wird wie ein reservierter Schlüssel für das Protokoll verwendet.

Mit benutzerdefinierten Namespaces ist es möglich, benutzerdefinierte IQ (oder etwas anderes) zu definieren und benutzerdefinierte Logik/Parser etc. zu feuern genau wenn Sie wollen und erhalten Sie benutzerdefinierte Aktionen, wie Sie möchten und benötigen.

Offizielle Dokumente:

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

Mehr noch:

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

Verwandte Themen