即时通讯的核心在于它的传输协议

xmpp是一个分散型通信网络,只要网络基础设施允许,任何xmpp用户都可以向其他xmpp用户传递消息

xmpp是一种基于xml的协议

XMPP中定义了三个角色,客户端,服务器,网关。通信能够在这三者的任意两个之间双向发生

而XMPP的核心部分就是一个在网络上分片段发送XML的流协议。这个流协议是XMPP的即时通讯指令的传递基础,也是一个非常重要的可以被进一步利用的网络基础协议。可以说,XMPP用TCP传的是XML流

缺点:数据负载过重,没有二进制传输

XMPP核心文件

XMPPStream:是开发过程中最主要交互的类,所有扩展和自定义代码均要基于此类进行

XMPPParser:供XMPPStream解析使用

XMPPJID:提供了一个不可变JID的实现,遵守NSCopying协议和NSCoding协议

XMPPElement:以下三个XMPP元素的基类

XMPPIQ:请求

XMPPMessage:消息

XMPPPresence:出席

XMPPModule:开发XMPP扩展时使用

XMPPLogging:XMPP的日志框架

XMPPInternal:整个XMPP框架内部使用的核心和高级底层内容

XMPPReconnect:如果意外中断,自动重连XMPP流

XMPPRoster:标准的XMPP花名册

XMPPRoom:提供多人聊天支持

XMPPPubSub:提供公共订阅支持

……


注意:1)XMPP框架仅提供了一个最小的代理委托系统用于接收三种XMPP类型(IQ、Message和Presence),如果要实现更多的功能,开发者还需要编写大量的相关代码

2)为了简化开发,通常将XMPPStream放置在AppDelegate中,以便于全局访问


9. 使用XMPP的实时消息传递系统包含三大通信类别:

消息传递,其中数据在有关各方之间传输

联机状态,允许用户广播其在线状态和可用性

信息/查询请求,它允许XMPP实体发起请求并从另一个实体接收响应


10. 以上三种类型的XMPP节都拥有以下公共属性:

from:源XMPP实体的JID

to:目标接收者的JID

id:当前对话的可选标识符

type:节的可选子类型

xml:lang:如果内容是人们可读的,则为消息语言的描述