数据包中 getChildElement 中的 Openfire XMPP 组件名称空间
Openfire XMPP component namespace in getChildElement in packet
作为 XMPP 和 Java(我是 iOS 开发人员)的新手,通过遵循一些教程,我设法编写了一个服务器组件 (Openfire) 和客户端 iOS 应用程序(使用 robbiehanson 的ios xmppframeowrk)。我可以向组件 <-> iOS 客户端发送消息和从中接收消息。这是一个抽象代码:
从 iOS 客户端应用程序向服务器组件发送状态:
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 中使用什么以及如何使用命名空间。任何指南,啧啧,link,请参考或回答
命名空间用于定义节(数据包)的"usage/scope"。
它们用于定义功能和绑定操作(解析器、监听器等),因此任何 API 都能够添加基于标签名称和命名空间的行为(默认或自定义)。
所以命名空间被用作协议的保留键。
使用自定义命名空间,可以定义自定义 IQ(或其他任何东西)并自定义 logic/parser 等,以便在您需要时触发 exaclty,并根据需要获取 n 个自定义操作。
官方文档:
https://datatracker.ietf.org/doc/rfc6120/?include_text=1
还有更多:
作为 XMPP 和 Java(我是 iOS 开发人员)的新手,通过遵循一些教程,我设法编写了一个服务器组件 (Openfire) 和客户端 iOS 应用程序(使用 robbiehanson 的ios xmppframeowrk)。我可以向组件 <-> iOS 客户端发送消息和从中接收消息。这是一个抽象代码:
从 iOS 客户端应用程序向服务器组件发送状态:
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 中使用什么以及如何使用命名空间。任何指南,啧啧,link,请参考或回答
命名空间用于定义节(数据包)的"usage/scope"。 它们用于定义功能和绑定操作(解析器、监听器等),因此任何 API 都能够添加基于标签名称和命名空间的行为(默认或自定义)。
所以命名空间被用作协议的保留键。
使用自定义命名空间,可以定义自定义 IQ(或其他任何东西)并自定义 logic/parser 等,以便在您需要时触发 exaclty,并根据需要获取 n 个自定义操作。
官方文档:
https://datatracker.ietf.org/doc/rfc6120/?include_text=1
还有更多: