XMPP

来源:互联网 发布:网络是利与弊 编辑:程序博客网 时间:2024/04/30 18:16

XMPPFramework框架内的大致介绍

Authentication授权、身份验证

Categories分类

Core核心

Extensions扩展

Utilities工具

Vendor第三方库



在Extensions中:

CoreDataStorage coreData存储

Reconnect 重新连接

Roster 好友管理、列表



常用模块:XEP扩展

XEP-0009 RPC(类似黑客技术)

XEP-0012 最后的活动(判断上线,离开断开)

XEP-0045 多人聊天

XEP-0054 名片-个人信息设置

XEP-0065 sockets5字节流

XEP-0066 二进制数据传输(特殊信息的发送)

XEP-0085 聊天状态通知

XEP-0136 聊天记录归档

XEP-0153 基于名片的头像

XEP-0199 XMPP ping(用来ping服务器和ping自己)

XEP-0335 json容器(可能以后某些信息传输将用json格式)



XMPP通信的结构

要促进消息传递,每个XMPP客户端用户client必须拥有一个全局唯一标识符。基于历史原因,这些标志符称为Jabber IDs,或JIDs。鉴于这个协议分布式特征,重要的是JID应该包含联系用户所需要的所有信息:不存在将用户链接到他们连接到的服务器的中央知识库。。

client和服务器节点,我将他们称为XMPP实体,都拥有JIDs。例子:ChangHong公司的员工wu可能拥有wu@changhong.com这个JID。changhong.com是ChangHong公司的XMPP服务器地址。JIDs还拥有连接到它们的资源。这容许在一个XMPP实体标志符之外进一步处理细粒度;例如,尽管上面的JID可以表示wu,但是wu@changhong.com/Work可以用于将数据发送到与他的工作相关的工具。XMPPJID的组成:userName@domain/resource

这些资源可以采用任意用户定义的名称,一个XMPP实体可以拥有任意数量的资源。除了可以是上下文依赖的外,它们还可以绑定到设备、工具或工作站。


XMPPFramework核心类

XMPPStream

XMPPJID XMPPStream中有实例属性

XMPPPresence XMPPStream中有实例属性

XMPPStreamDelegate 包含好几种代理API:授权、注册、安全等

XMPPPIQ 快速生成XML数据。消息查询就是它来处理的

XMPPMessage


XMPP工作原理
节点连接到服务器
服务器利用本地目录系统中的证书对其认证
节点指定目标地址,让服务器告知目标状态
服务器查找、连接并进行相互认证
节点之间进行交互
XMPP框架提供的主要扩展功能
XMPPReconnect:如果意外中断,自动重连XMPP流
XMPPRoster:标准的XMPP花名册
XMPPRoom:提供多人聊天支持
XMPPPubSub:提供公共订阅支持
通信类别及公共XML属性
使用XMPP的实时消息传递系统包含三大通信类别:
消息传递,其中数据在有关各方之间传输
联机状态,允许用户广播其在线状态和可用性
信息/查询请求,它允许XMPP实体发起请求并从另一个实体接收响应
以上三种类型的XMPP节都拥有以下公共属性:
from:源XMPP实体的JID
to:目标接收者的JID
id:当前对话的可选标识符
type:节的可选子类型
xml:lang:如果内容是人们可读的,则为消息语言的描述
XMPP核心文件
XMPPStream:是开发过程中最主要交互的类,所有扩展和自定义代码均要基于此类进行
XMPPParser:供XMPPStream解析使用
XMPPJID:提供了一个不可变JID的实现,遵守NSCopying协议和NSCoding协议
XMPPElement:以下三个XMPP元素的基类
XMPPIQ :请求
XMPPMessage :消息
XMPPPresence :出席
XMPPModule:开发XMPP扩展时使用
XMPPLogging:XMPP的日志框架
XMPPInternal:整个XMPP框架内部使用的核心和高级底层内容
XMPP框架常用扩展
XEP-0045: 多用户聊天
XEP-0060: 发布-订阅
XEP-0065: SOCKS5字节流
XEP-0085: 聊天状态通知
XEP-0096: 文件传输
XEP-0172: 用户昵称
XEP-0184: 消息送达
CoreDataStorage: 数据存储
Reconnect:重新连接
Roster:花名册
XMPP一栏的框架
CocoaLumberjack:日志框架
CocoaAsyncSocket:底层网络框架,实现异步Socket网络通讯
需要添加CFNetwork&Security框架依赖
KissXML:XML解析框架
需要添加libxml2.dylib框架依赖
需要指定如下编译选项:
OTHER_LDFLAGS = -lxml2
HEADER_SEARCH_PATHS = /usr/include/libxml2
libidn


链接

1 0
原创粉丝点击