XMPP框架分成两部分
XMPPStream是xmpp的核心,这是你需要接触的主要类,所有的拓展类和定制类需要添加它,它由一些有趣的功能设计,让框架灵活、可拓展和更加容易在它之上开发
XMPPParser 是XMPPStream 使用的一个类,你一般不需要和它打交道
XMPPJID 提供多个JID(Jabber Identifier) 实现,支持解析JID,并解析JID的多种格式,它实现了NSCopying代理,因此JID可以被用作NSDictionary的key。它也实现了NSCoding协议。
XMPPElement 是基本的类,用于三种主要的XMPP 元素 XMPPIQ
,XMPPMessage
和XMPPPresence
。
XMPPElement 继承自NSXMLElement
继承关系
XMPPIQ
-> XMPPElement
-> NSXMLElement
-> NSXMLNode
-> NSObject
XMPPMessage
-> XMPPElement
-> NSXMLElement
-> NSXMLNode
-> NSObject
XMPPPresence
-> XMPPElement
-> NSXMLElement
-> NSXMLNode
-> NSObjec
NSXML
有一个NSXMLElement+XMPP
拓展,这个拓展提供了多个转换方法让你的代码更加简洁可读
一种请求/响应机制,从一个实体从发送请求,另外一个实体接受请求,并进行响应。例如,client在stream的上下文中插入一个元素,向Server请求得到自己的好友列表,Server返回一个,里面是请求的结果。 主要的属性是type。包括: Get :获取当前域值。类似于http get方法。 Set :设置或替换get查询的值。类似于http put方法。 Result :说明成功的响应了先前的查询。类似于http状态码200。 Error: 查询和响应中出现的错误。 例子:
<iq from="alice@wonderland.lit/pda"
id="rr82a1z7"
to="alice@wonderland.lit"
type="get">
<query xmlns="jabber:iq:roster"/>
</iq>
是发送的消息实体,保存消息的信息
<message
to="lily@jabber.org/contact"
type="chat" >
<body> 你好,在忙吗</body>
</message>
presence用来表明用户的状态,如:online、away、dnd(请勿打扰)等 用来发送用户的状态
XMPPMddule 提供可选的附加拓展功能,如果你做应用,你可能创建你自己的类,注册和接受代理。然而,如果你正在实现基本的XEP或者你想要添加特定拓展,你需要创建顶层的XMPPModule。
XMPPLoging 提供一个非常快速、高效、灵活的日志框架
XMPPInternal 仅仅是一和core和多个拓展有关的个网络素材
添加modules
xmpp框架自带了一些拓展,当然你也可以写你希望的拓展,我们不会review任何可用的拓展,但我们会列一些例子
所有的概念就说到这里下一篇介绍具体应用