基于XMPP的企业级即时通信系统的研究与实现(硕士论文)

daixuf

贡献于2012-07-26

字数:0 关键词: 电话/通讯/IM聊天

武汉理工大学 硕士学位论文 基于XMPP的企业级即时通信系统的研究与实现 姓名:陈武 申请学位级别:硕士 专业:计算机应用技术 指导教师:熊盛武;杨世达 20090401中文摘要随着信息技术和I列络通信技术的发展,即时通信系统的应用也得到了飞速的发展,比较典蜃!的有QQ、MSN,它们的出{现使得在以网络为载体的新世纪出现了一种全新的交流方式,它极大地提高了人们交流的效率同时降低了交流的成本,但是现舀:的符个即时通信系统采用了锌自不同的协议,使得不同系统用户之间无法交流,XMPP(ExtensibleMessagingandPresenceProtoc01)协议的出现解决了这~难题。Jabber/XMPP是一个由开源组织制定的、桀j二XML语言的协议,其丌放特性使丌发者之f【|Jur以叵卡l{竞争,促进了即时通信领域技术的进步与发展,同时改变了以往的即时通信系统之间无法互联的状7兑。由于Jabber/XMPP系统采用了分布式的结构和模块化的系统架构,因此很容易对系统的功能进行扩展。讵是基于以上优点,基于XMPP协议的即时通信系统成为企业信息化过程中必不可少的一部分。论文包括以下主要内容:1.介绍了XMPP协议的相关知识,并列出该协议的详细流程。2.详细分析了该企、l匕级即时通信系统系统需求,根据系统的设计原则和功能目标进行总体架构,给出了系统的总体设计和功能模块的划分。3.根据系统的设计原则,结合开源的协议包smack,实现了该系统需求中要求实现的功能。论文的重点之处在.j:通过开源协议的实现,构建出适合中国国情的食业级即时通信系统架构,并将其运用于实践中。实践表明,该整合框架功能强大、耦合度低,增强了系统的可维护性和可扩展性,达到了即时通信系统的设计目标。关键字:XMPP,smack,企业级,XML,即时通信系统AbstractWiththedevelopmentofinformationandnetworkcommunicationtechnology,instantmessagingsystemshavealsodevelopedrapidly,suchasQQ,MSN,theemergenceofinstantmessagingsystemscreatedanewexchangemethodinthenewcenturywhichwasonthecartierofnetwork.Theinstantmessagingsystemsimprovedtheefficiencyandreducedthecostgreatlywhenpeoplecommunicatewitheachother.butthevariousinstantmessagingsystemswerebasedondifferentprotocols,SOthattheuserscouldnotcommunicatewitheachotherbyinstantmessagingsystems,thisproblemwassolvedbyXMPP(ExtensibleMessagingandPresenceProtoc01).Jabber/XMPPwhichwasbasedonXMLwasdevelopedbyanopensourceorganization.TheemergenceofJabber/XMPPleadedtothepubliccompetitionbetweendevelopersandpromotedthedevelopmentinthefieldofinstantmessagingtechnology.Italsochangedthesituationthatinstantmessagingsystemscan’tcommunicatewitheachother.ItwaseasytoextendthefunctionsofJabber/XMPPsvstems,becauseJabber/XMPPsystemswerebasedonadistributedarchitectureandmodularsystemarchitecture.Becauseoftheseadvantages,theinstantmessagingsystembasedonXMPPforenterprisebecameanessentialpartoftheenterprises.Thethesisincludesthefollowingcontent:1.AsummaryabouttherelevantknowledgeofXMPPandthedetailprocessofXMPP.2.Thethesisanalyzedtherequirementsoftheenterprise—classinstantmessagingsystem,gavetheoveralldesignofthesystemandthedelineationoffunctionalmodulesinaccordancewiththeprinciplesofsystemandfunctiondesign.3.Realizedthefunctionsthatweredemandedbythesystemsthroughcombiningwithopen.sourcepackageofprotocolinaccordancewiththeprinciplesofsystemdesign.Thethesisfocusedonbuildingenterprise-classinstantmessagingsystemsarchitecturewhichwassuitableforChina’SnationalconditionbyrealizingopenUsourceprotoc01.Practicesprovedthattheframeworkoftheintegrationwaspowerfulandlowcoupling.Theframeworkoftheintegrationenhancedthesystem’Smaintainabilityandscalability,whichachievedthegoalsofinstantmessagingsystem.Keywords:XMPP,smack,enterprise—class,XML,instantmessagingsystemsIII独创性声明本人声明,所呈交的论文是本人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得武汉理工大学或其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均己在论文中作了明确的说明并表示了谢意。躲衅日期芈关于论文使用授权的说明本人完全了解武汉理工大学有关保留、使用学位论文的规定,即:学校有权保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权武汉理工大学可以将本学位论文的全部内容编入有关数据库进行检索,可以采用影印、缩印或其他复制手段保存或汇编本学位论文。同时授权经武汉理工大学认可的国家有关机构或论文数据库使用或收录本学位论文,并向社会公众提供信息服务。(保密的论文在解密后遵守此规定)一虢雠翩虢数期毕武汉理l:人。’≯颂卜学f≯论上1.1选题背景第1章绪论随着信息j乏术以及网络技术的发展,人们l:Hf1J之I'日J交流的手段越来越多,而其中最霞要的转变应该是即时通信系统的:土j现,短短的二十年间即时通信系统的功能越水越强大,用户越来越多,极大地方便了人与人之间的交流。即时通信系统(IM,InstantInformationSystem)实现了利用现代计算机网络通信技术进}J:信息交互,使人与人之问、企业与企业之间的交互变得方便而高效。由于即时通信系统的众多优势,现在市面上出现了许多种即时通信系统,在这些IM软f,I给我们的生活带来方便的同时,也m现了新的问题,也就是这些IM各自遵循小同的协议,从而导致这些系统之I'日j不能互联互通,Jabber/XMPP协议的出现解决了这一难题【1JI:2】。Jabber/XMPP是一个由开源组织制定的、基于XML语言的协议,其开放特性使开发者之M可以互相竞争,促进了即时通信领域技术的进步与发展,同时改变了以i手的即时通信系统之l’日J无法互联的状况。由于Jabber/XMPP采用了分布式的结构,梭块化可扩展的系统架构使得扩展它的功能变得简单【3J。随着企业信息化建设的发展,即时通信系统逐步融入企业之中,因为相对于传统的通信『-段(电话、邮件)来讲,即时通信系统以网络为载体,具有成本低,效率高等优点,使人们摆脱了复杂费时的电话和枯燥无味的邮件,将即时消息、文件传输、语卉通信和视频通信等功能成功的集成于即时通信系统中,从而满足了不同工种和不同任务的需要,为现代企业提供了一种全新的办公平台【41I引。1.2国内外发展现状即时通信是一种基于互联网应用的实时交互方式。网络上的用户可以利用IM软件实现文字、音频和视频等信息的即时传送,以及点对点的数据交换。在信息时代的背景下,IM一经推出迅速风靡全球,它极大地方便了人与人之问的沟通。武汉理j:人学硕+学位论文上世纪九十年代中期,四位以色列人丌发出世界上第一个即时通信软件ICQ,随后便出现各种各样的即时通信软件,如雅虎公司与微软公司分别推出Yahoo!Messenger和MSNMessenger,其中1999年2月腾讯公司推出的OICQ获得成功(OICQ在2000年正式改为QQ),是目前国内拥有用户数量最多的即时通信系统。较为流行的蹦软件还有阿罩旺旺、网易泡泡、GTalk等161l¨。即时通信系统是计算机技术发展的产物,系统的开发涉及到多项技术的融合,因此即时通信系统是一个复杂的系统工程,即时通信的出现是基于旺联网通信方式的一次重大变革,对即时通信的研究有着重要的应用价值。目时即时通信系统软件的开发没有统一的协议标准,大部分公司都是自己开发通信协议或者在开源的协议基础上进行修改,这就造成了腾讯公司~家独大的局面,不利于即时通信系统的发展,同时也给广大的用户使用带来不便,而XMPP协议的出现解决了这一难题,使得大量的IM有了一个可靠的高效的开放协议,有利于实现各种IM的资源整合,因此致力于基于XMPP协议的即时通信系统研究,开发出适合中国国情的中小型企业即时通信系统具有重要的意义【8】【91。近年来,随着XML技术的同趋完善及广泛应用,基于XML语言的通信协议已经成为主流,强烈的冲击着传统的通信协议。因为采用基于XML语言的通信协议,使系统的开发摆脱了语言的束缚,使协议和程序开发语言完全脱离,同时也使客户端和服务器脱离,人们可以根据自己的喜好选择开发所用的语言。简化了应月】程序的丌发,降低了各个模块的耦合度,这些技术为即时通信系统的开发提供完善的框架,成功地解决了即时通信系统开发中出现的许多问题。1.3课题研究意义随着internet的普及和网络技术的发展,通过互联网进行实时信息的传输成为当今研究的技术热点,也是各大企、I业新时期的价值增长点,因为同传统的交流方式相比,即时通讯具有价格低廉,用户体验更加舒服的优势,这将改变人们的行为方式、提高工作效率,具有早.程碑的意义,因而这就决定了实时通信系统将拥有大量的用户群,并将带来巨大的经济利益。于是各大运营商丌发了各种各样的软件,各种软件所遵守的通信协议各不相同,这就导致不同的实时通信软件之间无法通信,这就限制了实时通信软件的普及也给人们的使用带来不便,XMPP协议的出现使即时通信领域有了统一的标准,该协议的出现将打2武汉理一l:人学硕:}学位论文破个别软仆的垄断,实现不同软件间的互联互通,使人们的使用更加方便【mJ【111。本文{JJf究的主要内容有:1.Jabber/XMPP技术是丌源的和可扩展的并能使现有的即时通信应用系统之间实现互连互通。2.XMPP提供了不同系统间通信XML数据流处婵技术,使系统的开发摆脱了程序语言的束缚,能为多网络I'日J连接提供安全和埸于实现的编程语言环境。3.XMPP提高了一套高效的数据路由机制。4.XMPP提高实时信息处理的效率和文件传输的效率,同时实现了同SOCKS5协议的集j戊。1.4课题研究内容及论文组织结构课题E要研究内容包括以下几个方面:1.对现有即时通信系统开发技术JAvAEE、XMPP协议、SASL协议、XML语言等进行分析和研究。2.详细分析即时通信系统的需求并设计该系统。3.提m基于XMPP协议的实现方案,通过iava语言实现协议中规范的相关功能。论文的组织结构如下:第1卷绪论。绪论部分简要介绍了即时通信系统的发展现状,以及该系统的实现对食业信息化建设的重大实践意义。第2錾基于XMPP协议的即时通信系统相关技术。本章从C/S模式的分布式体系结构分析丌始,介绍了即时通信系统实现的各种协议,以及XMPP协议的实现的找体XML语言在这一协议中的应『fj。第3錾系统的总体设计和服务器端的实现。本章具体介绍了XMPP协议在即时通信系统服务器端的实现,介绍了服务器端的工作原理,并对数据库做了详细设计,并对支持文件传输的SOCKS5协议进行了集成。第4章即时通信系统客户端的实现。本章具体介绍了XMPP协议在即时通信系统客户端的实现,介绍了客户端的工作原理。第5章系统的测试。从分层的角度对系统进行测试,以确保系统的可靠性和J下确性。第6章总结与展望。本章对论文的主要工作进行总结,并指出了下一步研究工作的重点,展望了未来即时通信系统发展方向。武汉理jIi人学硕f’学f节论文第2章基于XMPP协议的即时通信系统相关技术2.1C/S模式的体系结构传统的应用系统开发普遍采用C/S(client/server,客户端/月艮务器端)两层体系结构,其中客户端负责向用户提供操作77-嘶,接受用户输入数据信息,通过请求(request)向服务器端发送数据,接受暇务器端的响应(response),并将响应结果向用户显示。服务器端主要负责破动接受客户端的请求,接受数掘并进行响应的逻辑处理,以及数据持久化工f1.,并发送响应,将处理结果返旧给客户端。这种C/S两层体系结构是一种通jtj的,基于消息的模块化结构,其结构比较简单。2.1.1XML的特点和优势可扩展标记语言(XML)是Web上的数掘通用语言,它使开发人员能够将结构化的数据从不同的应用程序传递到桌嘶,进行本地解析和封装,XML允许为特定J电用程序创建特定的数据格式,它足在服务器之间传输数据的理想格式【l引。xMPP协议采用XML作为传输的数扒格式,使得XMPP协议实现了跨平台,XML主要具有以下几个特点:l、XML是一个精简的SGML,它将SGML的丰富功能与HTML的易用性结合到Web随用中,它保留了SGML的可扩展功能,这使得XML从根本上有区别于HTML,并且XML种还包括可扩‘展格式语言XSL(ExtensibleStyleLanguage)和可扩l畏链接语言XLL(ExtensibleLinkingLanguage)使得XML的显示和解析更加方便快捷;2、XML是W3C正式批准的,它完全可用于Web和工具的开发,XML具仃标准的域名说明方法,支持文档对象模型标准、可扩展类型语言标准、可扩展链接语言标准和XML指针语言标准。使用XML可以在不同的计算机系统l、日』交换信息,而且还可以跨越国界和超越不同文化疆界交换信息:3、XML支持复用文档片断,使用者可以发明和使用自己的标签,也可以与他人共享,可延伸性大,在XML中,可定义一组无限量的标准,可以有效地进行XML文件的扩充113】114I。4武汉理T大学硕士学位论文2.2XMPP协议基础2.2.1XMPP协议简介XMPP协议采用的是客户端.服务器架构,所有从一个客户端发到另一个客户端的消息和数据都必须经过XMPP服务器转发,而且还支持服务器问DNS的路由,这也就使构建服务器集群成为可能,使不同服务器下的客户端也可以通信,XMPP的前身是Jabber,一个开源组织制定的网络即时通信协议【141。对于XMPP协议来说,由于其核心是采用XML流传输协议定义的,从而使得XMPP协议能够应用在一个比其它网络通信协议更高效更规范的基础一卜。XMPP协议的核心就是在网络上分片断发送XML流的协议。这个流协议是XMPP的即时通讯指令的传递手段,也是一个非常重要的可以被进一步利刚的网络基础协议。所以可以说,XMPP就是在TCP连接上传输XML流f15J。借助于XML易于解析和阅渎的特性,使得XMPP的协议的实用性更强,适用面更广116J,XML流传输的足与即时通讯相关的信息。在此之前的各种通信协议中,这些信息要么用二进制的形式发送,要么用纯文本指令加空格加参数加换行符的方式发送。而XMPP传输的即时通讯信息和过去的类似,只是协议的形式变成了XML格式的形式【17J。这不但使得解析变得容易了,人们阅读起来也变得容易了,同时方便了开发和查错,但是同时由于大量的信息重复,虽然确保了信息的完整,但网络传输的效率变低,这是XMPP的不足之处。2.2.2XMPP协议簇X}ylPT)SASLTLSTCP图2—1XMPP协议簇为了防止服务器问发送的数据被篡改或偷听,服务器通信引入了TLS机制,使用TLS能实现数据加密,从而保证了在传输过程中数据的安全,该协议山两武汉理.1:人’≯硕十。≯f妒论文层纠成:TL。SiLj丈fJJ、汶(TLSRecord)和TLS握下协议(TLSHandshake)。较低的层为TLSiL二丧坍议,位于某个可谨的f专输协议(例如TCP)上面。其协议各jJ电用中的⋯!呼7,j:TCP~TLS—SASL—XMPP,TCP是传输控制协议,TLS是1之输层安今=m议,SASL是简单认证和安令层阱议,以上所列协议根据各自不同的功能,舀:系统。火现中处于不同的层级f博II阳I。基本IM协i文.fll:定义了基本的即时通信系统所应该支持的协议组,不fr司的协议代表了不ffd的J力能,这些功能的扩展是基FXMPP协议良好的扩展性能的,任何一项功能的扩j陡鄙有其固定的规范,这止电足在协议中规定好的,如表2一l所示1201121]:表2—1基本IM协议组协议脱范需求级别XMPP核,亡、协。议必需实现的XMPPIM伪、议必需实现的服务发现阱议必需实现的带内泣删协议推荐实现的非SASL认iJj{协议对服务器端推荐实现的;对客户端不推荐实现出错条f,}f映射推荐实现的实体能力协议对客户端必需实现的中级IM协议组:定义了系统中级应用所应该支持的协议组,就是在基本的通信系统中添加了多用户聊天,文件传输等功能,如表2.2所示:表2—1中级IM协议组协议规范需求级别基本IM协议组协议必需实现的多jfj户聊天协议必需实现的XHTML—IM协议必需实现的文件传输协议必需实现的实体能力协议必需实现的须注意的是,表2.2中的协议仅应川于客户端(也即,它们并对服务器引入新的要求)。另外,这些协议有各自依赖的协议1231124l2.2.3地址空间一个实体可以是任何一个被认为是一个网络端点,而且它是通过XMPP协议进行相互问通信的。这些实体都有一个具有唯一性的地址,并符合规范要求6武汉理j二人学硕士学何论文的格式,一个XMPP实体的地址被称为JabberIdentifier或JID,其作川类似于Ⅲ地址。一个合法的JID包括一组排列好的元素,包括域名,节点名,和资源名,其格式为:jid=[node”@”]domain[¨/”resource]㈣【26】域名(domainidentifier)是一个主要的元素并且是JID中唯一必需的元素,一个纯粹的域名或IP地址也是一个合法的JID,它通常代表网络的网关或者主服务器,其它实体通过连接它来实现XML转发和数据管理功能【261。节点名(nodeidentifier)是一个可选的第二元素,放在域名之前并用符lp@”分开。它通常表示一个向服务器或网关请求和使用网络服务的实体(比如‘个客户端),当然它也能够表示其他的实体(比如在多用户聊天系统中的一个房fijJ)。节点名所代表的实体,依赖于一个特定的域名【26I。资源名(resourceidentifier)是一个可选的第三元素,它放在域名的后面并由符号”/”分开。资源名可以跟在后面也可以跟在后面。它通常表示一个特定的会话,连接或者一个附属于某个实体的对象,比如多用户聊天室中的一个参加者。对于服务器和和其他客户端来说,资源名是不透明的【26j。所有JID都是基于上述的结构。类似这种结构,最常用来标识一个即时消息用户,这个用户所连接的服务器,以及这个用户用于连接的资源(比如某一类型的客户端软件,QQ、MSN等等)。2.2.4XMPP协议的命名空间iabber:iq:private一私有数据存储,用于本地用,、私人设置信息,比如用户备注等jabber:iq:conferenee-----般会议,用于多个用户之l'HJ的信息共享jabber:x:encrypted--)J[1密的消息,用于发送加密信息iabber:x:expire---消息终止iabber:iq:time---客户端时间jabber:iq:auth--简单用户认证,~般用于服务器之问或者服务器和客户端的认证iabber:x:roster---内部的花名册条目jabber:x:signed--标记的在线状态jabber:iq:search--用户数据库查询,用于向服务器端发送查询请求jabber:iq:register---注册请求,用于用户注册相关信息。jabber:iq:roster---花名册(好友名单)管理,用于企业的部门设置或者是用户组设置jabber:x:conference---会议邀请,用于向参加会议用户发送开会通知iabber:x:event--消息事件vcard.temr临时的vCard,用于设置用户的头像以及昵称等信息【26】7武汉理|J.大学硕十学位论文2.2.5XMPP协议消息格式定义即时通信系统的各个实体之间的通信是以XML节和XML流的形式出现的,不仅可以进行简单的文本交流,也可以携带各种复杂的数据和文件,这一特性决定了基于XMPP协议的即时通信系统的客户端和服务器端摆脱了语言的限制,只需要能对XML语言进行解析就可以了。XML流的定义:一个XML流是一个类似于容器的流,其中包含了两个实体之间通过网络发送的XML元素。一个XML流是由一个XML打开标签开始,流的结尾则是以一个XML关闭标签</stream>结束。在流的丌始到结束之问,初始化它的实体可以通过流发送大量的XML元素,用于流的交互和通信,最终整个XML流是一个符合XML规范的XML文本【25】。XML节的定义:一个XML节是一个XMPP实体通过XML流向另一个XMPP实体发送的XML报文中的一个节点。一个XML节存在于根元素的下层,任何XML节都是从一个XML流的下一级的一个打开标签开始,到对应的关闭标签,每个XML节代表了不同的信息实现了不同的功能。在这里定义的XML节仅限于矛1]元素。XMPP协议包括3个顶层XML元素B61此元素用于确定用户的订阅状态,可以查询、询问好友的在线状念,同时也可以发布自己的在线状态如下所示:from=’chenwu@192.168.0.5/msn’to=’wangjun@192.168.0.5/msll’type=‘probe’></presence>元素可以取下面几种值【27】【28】:probe:用于服务器向客户端查询订阅状态,相当于一个“探针”subscribe:请求订阅别人,即请求加对方为好友subscribed:同意被别人订阅,也就是确认被对方加为好友unsubscfibe:取消订阅别人,请求删除某好友unsubscribed:拒绝被别人订阅,即拒绝对方的添加请求:用于在两个XMPP用户之间发送信息,其中包含的元素规定了消息的源节点、目的节点、发送的形式和信息的内容,如果用户在线服务器立即转武汉珊I:人‘学硕r7:f一论文发;否则服务器就存储。to:标识消息的接收方,一般用JID标示from:指发送方的名字或标示(id),一般用JID』=,j、,J:。text:此元素包含了要提交给目标用户的信息,址纯文本信息。type:是发送的消息的类型(群发或单发),如果怂“groupchat”则“to”属性中只能添服务器的JID(多用户聊天中用到这种类1f{!),意味着是群发给日的服务器下的所有用户。如果是“chat”则“to”属性可以j划J}{务器也可以填客尸|端的JID,表示只同某一个用户聊天。结构如下所示:你好,在忙吗</body></message>此元素管理XMPP服务器上任何两个用,’-I’日J的转换,允许他们通过相应的XML格式的查询和响应,比如:查询用户的用户名、密码等信息,设置自己的用户名和密码等主要的属性是type。包括:get:获取当前域值。set:设置或替换get查询的值。result:说明成功的l蛔应了先前的查询。error:查询和响应中出现的错误。结构如下所示:2.3XMPP核心协议2.3.1用户注册流程步骤1:客户端向服务器发送注册请求,iabber:iq:register命名空阳J标示了这一XML节的作用,是服务器端确定其功能模块的依据。</iq>步骤2:服务器向客户端返回需注册的字段:用户名、密码和邮箱地址,表9武汉理下大学硕士学位论文示服务器端需要了解用户的上述信息。Chooseausernameandpasswordforusewiththisservice.Pleasealsoprovideyouremailaddress.</instructions></query></iq>步骤3:客户端向服务器发送注册字段对应的值,客户端输入相关信息后,确认发送往服务器端,服务器端接收后会做相应的处理。wangjun</usemame>123456</password>wangjun@163.com</email></query></iq>步骤4:服务器返回注册成功信息,注册成功后,服务器返回成功信息,以便用户知道注册成功f30】f3l】。2.3.2用户登录流程步骤1:客户端初始化流给服务器,以便能得到服务器的应答,从而确认咳服务器是否可用。步骤2:服务器返回一个流标签给客户端作为应答,以表示目的服务器可用。10Ⅱ℃汉理l:人学硕士学位论文步骤3:目的服务器发送STARTTLS节给客户端,该节中包括验证机制、加密机制和其他流特’件。</starttls>DIGEST.MD5</mechanism>PLAIN</mechanism></mechanisms></strearn:features>步骤4:客户端发送STARTTLS节给目的服务器,表示客户端支持TLS协议。步骤5:目的服务器通知客户端可以继续进行三次握手协议。步骤5(或者):服务器通知客户端TLS握手失败并关闭流和TCP连接。武汉理上人学硕士学位论文</stream:strearn>步骤6:客户端和服务器尝试通过已有的TCP连接完成TLS握手。步骤7:如果TLS握手成功,客户端发送~个新的流给服务器。步骤7(或者):如果TLS握手不成功,服务器天闭TCP连接。步骤8:服务器发送一个流头信息应答客户端,表示开始另一协议,其中包括任何可用的流特性。DIGES●MD5</mechanism>PLAlN</mechanism>EXTERNAL</mechanism></mechanisms></stream:features>步骤9:客户必须选择一种认证机制。如果服务器不支持该机制,将响应一个失败通知。步骤10:客户初始化一个新的流。步骤11:服务器回复一个被认证的流。步骤12:~旦客户认证成功,客户请求打开一个即时通信的会话。</iq>步骤13:服务器通知客户创建会话成功或失败㈣【341。</error></iq>12武汉理jL=人学硕士学位论文2.3.3获取好友在线信息流程步骤1、用户的本地服务器代替用户发送在线信息调查“探针"给,本地花名册中subscription=”to”和subscription=”both”的联系人的可用资源。步骤2、联系人的服务器在接收到调查“探针”后,代替所有可用的资源应答在线信息调查。away</show>befightback</status>O</priority></presence>1</priority></presence>dnd</show>gallivanting</status></presence>2.3.4添加好友的流程步骤l:客户端向本地服务器名册中添加新的条目,其中item中包含了好友的JID,用户名和将其加入的群组。MyBuddies</group></item></query></iq>步骤2:服务器为这个新的名册条目初始化一个新的彩:|f}发送给这个用户的所有已经请求名册的可用资源,其’subscription’属性的f|l工J,j”none”;并且以一个IQresult应答发送的资源表明名册设置成功了。MyBuddies</group></item></query></iq>MyBuddies</group></item></query></iq>步骤3:用户向这个联系人请求在线信息的订阅,用,、的客户端必须发送一个类型为’subscribe’的在线信息节给联系人。步骤4:用户的服务器初始化第二个新的名册发送给这个用户的所有已经请求名册的可用资源,把这个联系人设置成’none’订阅状态的朱决的状态;这个未决的状态是由名册条目中包含的ask---’subscribe’属性所指示的。MyBuddies</group></item></quer)》</iq>MyBuddies</group></item></query></iq>步骤5.-用户的服务器向联系人服务器转发订阅在线状态的请求。步骤6:联系人的服务器向联系人的客户端转发订阅在线状态的请求。步骤7:联系人的客户端添加一个条目并返回同意订阅在线状态的消息。SomeGroup</group></item></query></iq>步骤8:联系人的服务器初始化一个名册发送给所有联系人己请求名册的可用资源,包含一个关于那个用户的名册条目,并且其订阅状态为tfrom-(甚至联系武汉卵l:人。≯硕士学位论文人彳i执行名册设置,服务器比必须发送它);(2)返回一个IQresult给发送的资源表示名册设置成功了;(3)路ttq这_个”subscribed”类型的在线信息节给用户,苗‘先把’from’地址改为联系Lfi‘jf-也JID;然后从所有联系人的可用资源向用户发送i,J.H】的在线信息。SomeGroup</group></item></query></iq>●步骤9:向用户递送订阅成功的确认信息,向用户可崩的资源广播新的名册,并递送可用的信息节。MyBuddies</group></item></query></iq>MyBuddies</group></item></query></iq>步骤10:用户客户端确认订阅在线状态成功步骤2:作为一个结果,用户的服务器必须发送一个名册推送给这个用户的所有已请求名册的可用资源,包含一个关于这个联系人的更新名册条目,其’subscription’属性设为”none”;并且必须路由这个”unsubscribe”类型的在线信息节给联系人(首先把’from’地址设为用户的纯JID())。MyBuddies</group></item></query></iq>步骤3:接收到指向联系人的”unsubscribe”类型在线信息节之后,联系人的服务器必须初始化一个名册发送给这个联系人的所有己请求名册的可用资源,武汉理r:人。≯硕j:’’j::何论文包含‘‘个炎于这个用户的名册条日,其’subscription’属。r卜戗改为”none”(如果联系人彳i商J.j}j或未曾请求名册,联系人的服务器必须修改彩玎”条Ij并在下次联系人清求名册|f'f发送那个已修改的条H):并且必须发送这个”unsubscribe”状态改变通知给联系人。SomeGroup</group></item></query></iq>步骤4:接收到”unsubscribe”类型的在线信息节之后,联系人应该承认收到那个订阅状态通知,要么发送一个”unsubscfibed”类型的在线信息节给用户以证实它,要么发送一个”subscribed”类型的在线信息节给用户否认它;这个步骤不影响订阅状态,但是让联系人的服务器知道它必须不再发送订阅状态变更通知给联系人。步骤5:联系人的服务器接着必须发送一个”unsubscribed”类型的在线信息节给用户;并且应该向用户发送从这个联系人的所有可用资源收到的不可用在线信息。步骤6:当用户的服务器收到类型为”unsubscfibed”和”unavailable”的在线信息节,它必须递送它们给用户。武汉理j1:人学硕士学位论文步骤7:接收到”unsubscribed”类型的在线信息节之后,用户应该承认收到那个订阅状态变更通知,要么向联系人发送一个”unsubscribe”类型的在线信息节以证实它,要么向联系人发送一个”subscribe”的在线信息节以否认它;这步骤不影响订阅状态,但是让用户的服务器知道它必须不在发送订阅状态变更通知给用户。2.3.6用户之间发送消息流程图2-4用户发送消息流程图一个即时消息客户端应该通过提供一个JR)或节中不同于发送者的’to’属性来指定一个消息的预定接收者。如果这个消息是在回复之前接收到的消息,而接收到的消息是从JR)格式为(例如,在一个聊天会话的上下文中)实体发来的,这个回复消息的’to’地址的值应该是而不是,除非发送者知道(通过在线信息)预定的接收者的资源将不再可用。如果消息是在任何现存的聊天会话或接收到的消息之外被发送的,’to’地址的值应该格式为而不是20武汉理I:人学硕十学位论文Inessageto=’romeo@example.net’from='juliet@XMPPExample.corn/balcony'type=’chat’xml:lang=’en’>Whereareyou仟om.Romeo?</body>proce,Romeo?</body></message>2.3.7用户之间传送文件的流程j.冬fXMPP协议的文件传输必须经历三个步骤:SOCKS5流协商、创建socket和传送文件字节流,在此期I、日JSOCKS5流协商的建立一部分通过XMPPXML流,一部分通过一个独立的socket,实际的文件传输发生在创建的socket上。为实现以上功能,XMPP协议专门定义了一套完整的文件传输的元数据,如卜:file一表示文件传输报文的根元素size一表示发送文件的大小,按字节计算name一表示发送者想要发送的文件名date一表示文件的最后修改同期,R期格式使用XMPPDateandTimeProfiles指定的格式。hash一文件内容的MD5密文offset一指定了开始进行文件传输的起点位置,按字节计算。如果没有指定,默认值为O。length一指定了从偏移量丌始的要接收的字节数,默认值是从偏移量开始到文件未尾的字节数。range一元素中的两个元素都是可选的,发送无属性的元素等同于没有range元素,当在流初始化的结果中没有元素时,发送者必须从偏移最为0处发送完整的文件,更通常的情况是,从偏移量位置开始根据指定长度通过字节流发送。其具体的发送流程如下所示:第一步:文件发送端,发送流协商包至目的端。2l武汉理r人。Z硕十’学位论文

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享文档获得金币 ] 1 人已下载

下载文档

相关文档