从零开始利用XMPP做即时通讯ios篇(二)

来源:互联网 发布:如何用eviews导入数据 编辑:程序博客网 时间:2024/05/16 01:36

一、即时通讯技术简介

1.即时通讯技术(IM)支持用户在线实时交谈。如果要发送一条信息,用户需要打开一个小窗口,以便让用户及其朋友在其中输入信息并让交谈双方都看到交谈的内容
2.有许多的IM系统,如AOL IM、YahooIM、 MSN以及QQ,它们最大的区别在于各自通讯协议的实现,所以即时通讯技术的核心在于它的传输协议
3.协议用来说明信息在网络上如何传输,如果有了统一的传输协议,那么应当可以实现各个IM之间的直接通讯,为了创建即时通讯的统一标准,目前已经出现过的IM协议包括:IETF的对话初始协议(SIP)和即时通讯对话初始协议和表示扩展协议(SIMPLE)、应用交换协议(APEX)、显示和即时通讯协议(PRIM)及基于XML且开放的可扩展通讯和表示协议(XMPP)协议(常称为 Jabber协议)
4.人们多次努力,试图统一各大主要IM供应商的标准(AOL、Yahoo及Microsoft),但无一成功,且每一种IM仍然继续使用自己所拥有的协议

二、XMPP起源

1.XMPP是基于XML的协议,用于即时消息(IM)以及在线现场探测。最初,XMPP作为一个框架开发,目标是支持企业环境内的即时消息传递和联机状态应用程序。当时的即时消息传递网络是私有的,不适合企业使用
2.XMPP前身是Jabber(1998年),是一个开源组织定义的网络即时通信协议
3.XMPP是一个分散型通信网络,这意味着,只要网络基础设施允许,任何XMPP用户都可以向其他任何XMPP用户传递消息。多个XMPP服务器也可以通过一个专门的“服务器-服务器”协议相互通信,提供了创建分散型社交网络和协作框架的可能性
4.尽管XMPP的出现是为了满足“个人-个人”即时消息传递的要求,但它完全不必局限于此任务

三、XMPP慨术

1.XMPP是一种基于XML的协议,它继承了在XML环境中灵活的发展性。这表明XMPP是可扩展的。可以通过发送扩展的信息来处理用户的需求,以及在XMPP的顶端建立如内容发布系统和基于地址的服务等应用程序。而且,XMPP包含了针对服务器端的软件协议,使之能与另一个进行通话,这使得开发者更容易建立客户应用程序或给一个配置好的系统添加功能
2.XMPP的核心XML流传输协议的定义使得XMPP能够在一个比以往网络通信协议更规范的平台上。借助于XML易于解析和阅读的特性,使得XMPP的协议能够非常漂亮
3.XMPP的即时通讯扩展应用部分是根据IETF在这之前对即时通讯的一个抽象定义的,与其他业已得到广泛使用的即时通讯协议,诸如AIM,QQ等有功能完整,完善等先进性
4.XMPP的官方文档时RFC 3920

四、导入XMPPFramework框架

其他语言可用框架: http://xmpp.org/xmpp-software/libraries/

1.下载XMPPFramework框架:https://github.com/robbiehanson/XMPPFramework
2.导入依赖框架
CocoaLumberjack:日志框架
CocoaAsyncSocket:底层网络框架
需要添加CFNetwork&Security框架依赖
–KissXML:XML解析框架
需要添加libxml2.dylib框架依赖
需要指定如下编译选项:

OTHER_LDFLAGS =-lxml2

HEADER_SEARCH_PATHS =/usr/include/libxml2

libidn


3.将以下4个文件夹导入到项目
–Authentication
–Categories
–Core
–Utilities
另外还需要添加libresolv.dylib依赖

4.导入XMPP扩展框架(Extensions)
将Sample_XMPPFramework.h添加到项目,并且重命名为XMPPFramework.h

五、XMPP框架常用扩展
XEP-0045:多用户聊天
XEP-0060:发布-订阅
XEP-0065:SOCKS5字节流
XEP-0085: 聊天状态通知
XEP-0096:文件传输
XEP-0172:用户昵称
CoreDataStorage: 数据存储
Reconnect:重新连接
Roster:花名册
http://xmpp.org/xmpp-protocols/xmpp-extensions/

六、XMPP核心文件
XMPPStream:是开发过程中最主要交互的类,所有扩展和自定义代码均要基于此类进行
XMPPParser:供XMPPStream解析使用
XMPPJID:提供了一个不可变JID的实现,遵守NSCopying协议和NSCoding协议
XMPPElement:以下三个XMPP元素的基类
XMPPIQ  :请求
XMPPMessage  :消息
XMPPPresence  :出席
XMPPModule:开发XMPP扩展时使用
XMPPLogging:XMPP的日志框架
XMPPInternal:整个XMPP框架内部使用的核心和高级底层内容

七、XMPPStream实例的配置
1.配置如何连接至XMPP服务器
2.添加代理
3.添加模块
4.开始连接
5.开始授权

注意:
1.XMPP框架仅提供了一个最小的代理委托系统用于接收三种XMPP类型(IQ、Message和Presence),如果要实现更多的功能,开发者还需要编写大量的相关代码
2.为了简化开发,通常将XMPPStream放置在AppDelegate中,以便于全局访问

八、XMPP框架提供的主要扩展功能
1.XMPPReconnect:如果意外中断,自动重连XMPP流
2.XMPPRoster:标准的XMPP花名册
3.XMPPRoom:提供多人聊天支持
4.XMPPPubSub:提供公共订阅支持

XMPP应用程序功能预设
•用户登录、注册
•添加好友Roster
•好友聊天
•表情文字(CoreText)
•聊天状态 XEP-0085
•聊天室群聊XEP-0045
•发送文件 XEP-0096
•语音聊天 XEP-0065






0 0