分享
01.XMPP基础.pptx
下载文档

ID:3461434

大小:4.22MB

页数:70页

格式:PPTX

时间:2024-05-08

收藏 分享赚钱
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
01. XMPP 基础
XMPP 基础,即时通讯技术简介,即时通讯技术(IM-Instant Messaging)支持用户在线实时交谈。如果要发送一条信息,用户需要打开一个小窗口,以便让用户及其朋友在其中输入信息并让交谈双方都看到交谈的内容有许多的IM系统,如AOL、Yahoo IM、MSN以及QQ,它们最大的区别在于各自通讯协议的实现,所以即时通讯技术的核心在于它的传输协议协议用来说明信息在网络上如何传输,如果有了统一的传输协议,那么应当可以实现各个IM之间的直接通讯,为了创建即时通讯的统一标准,目前已经出现过的IM协议包括:IETF的对话初始协议(SIP)和即时通讯对话初始协议和表示扩展协议(SIMPLE)、应用交换协议(APEX)、显示和即时通讯协议(PRIM)及基于XML且开放的可扩展通讯和表示协议(XMPP)协议(常称为 Jabber 协议)人们多次努力,试图统一各大主要IM供应商的标准(AOL、Yahoo 及 Microsoft),但无一成功,且每一种IM仍然继续使用自己所拥有的协议,itcast登录的命令:,发送消息指令,qq,XMPP诞生的由来,I,C1,C2,shangsan,lisi,都是遵守XMPP即时通讯协议设计一款全世界都使用的即时通讯协议,无论使用什么即时通讯软件,都可以互联互通,XMPP起源,XMPP是基于XML的协议,用于即时消息(IM)以及在线现场探测。最初,XMPP作为一个框架开发,目标是支持企业环境内的即时消息传递和联机状态应用程序。XMPP前身是Jabber(1998年),是一个开源组织定义的网络即时通信协议XMPP是一个分散型通信网络,这意味着,只要网络基础设施允许,任何XMPP用户都可以向其他任何XMPP用户传递消息。多个XMPP服务器也可以通过一个专门的“服务器-服务器”协议相互通信,提供了创建分散型社交网络和协作框架的可能性尽管XMPP的出现是为了满足“个人-个人”即时消息传递的要求,但它完全不必局限于此任务,XMPP概述,XMPP是一种基于XML的协议,它继承了在XML环境中灵活的发展性。这表明XMPP是可扩展的。可以通过发送扩展的信息来处理用户的需求,以及在 XMPP的顶端建立如内容发布系统和基于地址的服务等应用程序。而且,XMPP包含了针对服务器端的软件协议,使之能与另一个进行通话,这使得开发者更容易建立客户应用程序或给一个配置好的系统添加功能XMPP的核心XML流传输协议的定义使得XMPP能够在一个比以往网络通信协议更规范的平台上。借助于XML易于解析和阅读的特性,使得XMPP的协议能够非常漂亮XMPP的即时通讯扩展应用部分是根据IETF在这之前对即时通讯的一个抽象定义的,与其他业已得到广泛使用的即时通讯协议,诸如AIM,QQ等有功能完整,完善等先进性XMPP的扩展协议Jingle使得其支持语音和视频,目前iOS尚不支持XMPP的官方文档是RFC 3920XMPP协议曾经是Google力推的即时通信协议,其代表作品是GTalk,Google Talk(GTalk),Google Talk是Google的IM工具,除了具有IM功能外,另外还加上了Voip功能,“界面清新大方”,可直接链接Gmail,接受查看邮件由于Google Talk是基于Jabber开源标准,这种标准允许用户和其它的即时讯息系统相连,比如苹果电脑的iChat,GAIM,Trillian Pro以及Psi。Google Talk只能够在Windows平台上运行Google Talk的用户无法使用这种软件与AIM,MSN Messenger或者雅虎Messenger的用户进行互通,GTalk界面截图,GTalk即将退出历史舞台,2013年5月,在Google I/O大会上,Google推出统一跨平台聊天应用Hangouts(环聊)取代Google TalkGoogle Hangouts不支持XMPP协议。Google Hangouts用户与非Google服务如XMPP协议的强有力支持者jabber.org之间的交流无法进行目前,Google Wave是基于XMPP协议的,并且Google还开发Jingle扩展进行基于XMPP协议的视频聊天。尽管Google尚未宣布Talk的关闭日期,不过从Google关闭Reader和iCal支持来看,Talk关闭之日不会太远,Google Hangouts宣传截图,XMPP定义,XMPP:The Extensible Messaging and Presence Protocol(可扩展通讯和表示协议)XMPP可用于服务类实时通讯、表示和需求响应服务中的XML数据元流式传输。XMPP以Jabber协议为基础,而Jabber是即时通讯中常用的开放式协议XMPP是基于XML的协议,用于即时消息(IM)以及在线现场探测。促进服务器之间的准即时操作。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其操作系统和浏览器不同,XMPP的基本结构,XMPP是一个典型的C/S架构,而不是像大多数即时通讯软件一样,使用P2P客户端到客户端的架构,也就是说在大多数情况下,当两个客户端进行通讯时,他们的消息都是通过服务器传递的。采用这种架构,主要是为了简化客户端,将大多数工作放在服务器端进行XMPP中定义了三个角色,客户端,服务器,网关。通信能够在这三者的任意两个之间双向发生服务器同时承担了客户端信息记录,连接管理和信息的路由功能网关承担着与异构即时通信系统的互联互通,异构系统可以包括SMS(短信),MSN,ICQ等基本的网络形式是单客户端通过TCP/IP连接到单服务器,然后在之上传输XML流,C/S 客户端/服务端,Server,Client1,Client2,QQServer,qq1,qq2,C/S 服务器压力比较重,P/P 点对点,P/P 服务器的压力比较小,XMPP工作原理,节点连接到服务器服务器利用本地目录系统中的证书对其认证节点指定目标地址,让服务器告知目标状态服务器查找、连接并进行相互认证节点之间进行交互,client,Server QQ,网关,XMPP工作原理示意图,传输内容,XMPP应用传输的是与即时通讯相关的指令。在以前这些命令要么用二进制的形式发送(比如QQ),要么用纯文本指令加空格加参数加换行符的方式发送(比如MSN)而XMPP传输的即时通讯指令的逻辑与以往相仿,只是协议的形式变成了XML格式的纯文本。这不但使得解析容易了,人也容易阅读了,方便了开发和查错而XMPP的核心部分就是一个在网络上分片段发送XML的流协议。这个流协议是XMPP的即时通讯指令的传递基础,也是一个非常重要的可以被进一步利用的网络基础协议,可以说XMPP用TCP传的是XML流,XMPP的优缺点,优点开放标准(XMPP的技术规格已被定义在RFC 3920及RFC 3921)证实可用,谷歌证实了GTalk分散安全可扩展缺点数据负载过重XML没有二进制传输,XMPP的传输小结,XMPP是一种类似于HTTP协议的一种数据传输协议,其过程就如同“解包装-包装”的过程。只需要理解其接收的类型及返回的类型,便可以很好的利用XMPP来进行数据通讯XMPP官方网站http:/xmpp.org,即时通讯软件(XMPP),服务器(openfire)也是要基于xmpp实现,客户端基于xmpp开发信息AdiumSpark,iphone 客户端基于xmpp开发使用xmppframwork框架开发,数据库mysqloracalSUN公司SQLServerDB2,服务器搭建安装MySQL,启动MySQL服务器,设置MySQL命令行搜索路径,打开终端,输入:sudo vi/.bash_profile输入 i然后粘贴以下内容#mysqlalias mysql=/usr/local/mysql/bin/mysqlalias mysqladmin=/usr/local/mysql/bin/mysqladmin#lsalias ls=ls-G按ESC键输入:wq重新启动终端程序,修改MySQL的管理员密码,mysqladmin-u root password 123456,彻底删除MySQL的方法,先停止所有mysql有关进程sudo rm/usr/local/mysqlsudo rm-rf/usr/local/mysql*sudo rm-rf/Library/StartupItems/MySQLCOMsudo rm-rf/Library/PreferencePanes/My*sudo vi/etc/hostconfig#removed the line MYSQLCOM=-YES-rm-rf/Library/PreferencePanes/My*sudo rm-rf/Library/Receipts/mysql*sudo rm-rf/Library/Receipts/MySQL*sudo rm-rf/var/db/receipts/com.mysql.*,安装MySQL管理工具mysql-workbench,建立数据库连接(1),建立数据库连接(2),建立数据库连接(3),建立数据库连接(4),创建openfire数据库(5),创建openfire数据库(6),创建openfire数据库(7),显示隐藏文件,在终端中输入以下命令,可以切换隐藏文件的显示显示隐藏文件defaults write com.apple.finder AppleShowAllFiles Yes,服务器搭建Openfire,可用服务器地址:http:/xmpp.org/xmpp-software/servers/课程选用:OpenfireOpenfire简介采用Java开发,开源的实时协作(RTC)服务器,基于XMPP(Jabber)协议安装Openfire之前,需要确认是否安装了JDK如果没有,需要安装jdk-7u45-macosx-x64可以轻易的构建高效率的即时通信服务器安装和使用简单,并利用Web进行管理单台服务器可支持上万(1000)并发用户,Openfire安装,下载并安装:http:/www.igniterealtime.org/projects/openfire/index.jsp安装位置:/usr/local/openfire/安装位置该文件夹的用户访问权限数据库脚本保存在/usr/local/openfire/resources/database文件夹下,修改/usr/local/openfire/目录权限,设置openfire数据库,将/usr/local/openfire/resources/database/openfire_mysql.sql 复制到桌面在MySQLWorkbench,导入该文件并执行,执行角本文件,数据库表结构,Openfire设置,在系统偏好中确保Openfire服务已经启动使用浏览器访问:http:/localhost:9090如果需要重新配置,可以修改/usr/local/openfire/conf/openfire.xml,将末尾的true修改为false即可:重新设置Openfire不会影响已经设置好的用户信息,只是在忘记管理员密码是重新设置即可。,设置语言,设置服务器(注意域名),选择数据库连接方式,设置数据库,设置管理员密码不要跳过!,配置完成并登录,Openfire服务器端口,新建用户,客户端设置测试Openfire服务器,XMPPJID,每个 XMPP客户端用户必须拥有一个全局惟一标识符。基于历史原因,这些标识符称为 Jabber ID或JID。鉴于协议的分布式特征,JID应包含联系用户所需的所有信息,JID的结构类似于电子邮件地址,但不要求 JID同时也是有效的电子邮件收件人客户端和服务器节点,被统称为 XMPP实体,都拥有JID。例如:SomeCorp公司的员工 John Doe可能拥有JID:John.D,其中是 SomeCorp公司的XMPP服务器的地址,John.Doe是John Doe的用户名还可以使用JID连接到其他资源。这允许在一个XMPP实体标识符之外进一步处理拓展,支持XMPP协议的客户端,Spark,Adium,服务器及客户端安装练习,体会XMPP目前所能支持的功能并且构思即将开发的XMPP项目所能包含的功能,iOS的XMPP框架XMPPFramework,其他语言可用框架地址:http:/xmpp.org/xmpp-software/libraries/课程选用:XMPPFramework,唯一可用的OC框架,导入XMPPFramework框架(1),下载XMPPFramework框架:https:/clonegit clone https:/Linker Flags=-lxml2Header Search Paths=/usr/include/libxml2libidn,设置XML头文件搜索路径,设置其他链接标记,导入XMPPFramework框架(2),将以下4个文件夹导入到项目AuthenticationCategoriesCoreUtilities另外还需要添加libresolv.dylib依赖,导入XMPPFramework框架(3),导入XMPP扩展框架Extensions将Sample_XMPPFramework.h添加到项目,并且重命名为XMPPFramework.h在xcode里面要自己添加下PCH在终端输入:git commit-m“添加XMPP框架”可以一次性提交所有增加的文件,XMPP框架常用扩展,XEP-0045:多用户聊天XEP-0060:发布-订阅XEP-0065:SOCKS5字节流XEP-0085:聊天状态通知XEP-0096:文件传输XEP-0172:用户昵称XEP-0184:消息送达CoreDataStorage:数据存储Reconnect:重新连接Roster:花名册http:/xmpp.org/xmpp-protocols/xmpp-extensions/,新建项目并导入XMPP框架练习,熟练掌握XMPP框架的导入过程并且构思即将开发的XMPP项目所能包含的功能,CocoaLumberjack,是一款高性能的日志输出插件需要配合XcodeColors插件一起使用https:/,Common.h,#import DDLog.h#import DDTTYLogger.h#ifdef DEBUGstatic const int ddLogLevel=LOG_LEVEL_VERBOSE;#elsestatic const int ddLogLevel=LOG_LEVEL_OFF;#endif,应用程序启动后设置跟踪级别,DDLog addLogger:DDTTYLogger sharedInstance;DDTTYLogger sharedInstance setColorsEnabled:YES;DDTTYLogger sharedInstance setForegroundColor:UIColor blueColor backgroundColor:nil forFlag:LOG_FLAG_INFO;DDLogError(错误信息);DDLogWarn(警告信息);DDLogInfo(提示信息);DDLogVerbose(详细信息);,XMPP核心文件,XMPPStream:是开发过程中最主要交互的类,所有扩展和自定义代码均要基于此类进行XMPPParser:供XMPPStream解析使用XMPPJID:提供了一个不可变JID的实现,遵守NSCopying协议和NSCoding协议XMPPElement:以下三个XMPP元素的基类XMPPIQ:请求XMPPMessage:消息XMPPPresence:出席XMPPModule:开发XMPP扩展时使用XMPPLogging:XMPP的日志框架XMPPInternal:整个XMPP框架内部使用的核心和高级底层内容,XMPPStream实例的配置,配置如何连接至XMPP服务器添加代理添加模块开始连接开始授权注意:XMPP框架仅提供了一个最小的代理委托系统用于接收三种XMPP类型(IQ、Message和Presence),如果要实现更多的功能,开发者还需要编写大量的相关代码为了简化开发,通常将XMPPStream放置在AppDelegate中,以便于全局访问,XMPP框架提供的主要扩展功能,XMPPReconnect:如果意外中断,自动重连XMPP流XMPPRoster:标准的XMPP花名册XMPPRoom:提供多人聊天支持XMPPPubSub:提供公共订阅支持,通信类别及公共XML属性,使用XMPP的实时消息传递系统包含三大通信类别:消息传递,其中数据在有关各方之间传输联机状态,允许用户广播其在线状态和可用性信息/查询请求,它允许XMPP实体发起请求并从另一个实体接收响应以上三种类型的XMPP节都拥有以下公共属性:from:源XMPP实体的JIDto:目标接收者的JIDid:当前对话的可选标识符type:节的可选子类型xml:lang:如果内容是人们可读的,则为消息语言的描述,XMPP应用程序功能预设,用户登录、注册添加好友 Roster好友聊天表情文字(CoreText)聊天状态 XEP-0085聊天室群聊 XEP-0045发送文件 XEP-0096语音聊天 XEP-0065,Q&A,Thanks!,

此文档下载收益归作者所有

下载文档
收起
展开