张艺-基于WebSocket的异构应用协同服务设计与实现.docx

上传人:小飞机 文档编号:2022585 上传时间:2022-12-31 格式:DOCX 页数:88 大小:2.80MB
返回 下载 相关 举报
张艺-基于WebSocket的异构应用协同服务设计与实现.docx_第1页
第1页 / 共88页
张艺-基于WebSocket的异构应用协同服务设计与实现.docx_第2页
第2页 / 共88页
张艺-基于WebSocket的异构应用协同服务设计与实现.docx_第3页
第3页 / 共88页
张艺-基于WebSocket的异构应用协同服务设计与实现.docx_第4页
第4页 / 共88页
张艺-基于WebSocket的异构应用协同服务设计与实现.docx_第5页
第5页 / 共88页
点击查看更多>>
资源描述

《张艺-基于WebSocket的异构应用协同服务设计与实现.docx》由会员分享,可在线阅读,更多相关《张艺-基于WebSocket的异构应用协同服务设计与实现.docx(88页珍藏版)》请在三一办公上搜索。

1、中图分类号:TP391 密 级:学科分类号:081202 论文编号:8300015-2015-S31硕士学位论文基于WebSocket的异构应用协同服务设计与实现研究生姓名张艺学科专业计算机软件与理论研究方向军用软件集成指导教师毕会娟 研究员级高工 培养单位 华北计算技术研究所电子科学研究院二一五年三月十五日学位论文独创性声明本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研究成果。除已特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示谢意。作者签名: 日期: 年 月 日学位论文使用

2、授权本人完全了解填写培养单位名称有关保留和使用学位论文的规定,本人在攻读学位期间论文工作的知识产权单位属于填写培养单位名称。培养单位和学位授予单位有权保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅,可以将学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。保密的学位论文在解密后适用此授权。作者签名: 日期: 年 月 日导师签名: 日期: 年 月 日摘 要随着网络带宽的不断增加、人们对于应用便捷性要求的不断提升和云和服务概念的不断深化,在采用传统C/S应用之外,越来越多的用户开始选择直接通过浏览器登陆服务来完成工作。同样

3、的,在协同过程中,多种类应用之间的协同工作也已经成为一个趋势。如何解决传统C/S架构下协同应用和B/S架构下协同应用之间的协同工作问题,如何提供B/S架构下的协同能力、提供B/S架构与C/S架构下异构应用间的协同能力,已经成为协同服务的迫切需求。为了给协同过程提供对多种类应用的支持,使基于C/S架构的协同应用和基于B/S架构的协同应用之间可以进行协同工作,本文提出并实现了一个基于WebSocket的异构应用协同服务。该服务支持包括基于HTTP的全双工流技术(BOSH)和WebSocket在内的各种通信协议,能同时对C/S架构下的部分应用和B/S架构下的部分应用提供支持。此外,本文提出的基于We

4、bSocket的异构应用协同服务采用了可扩展通讯表示协议(XMPP)这一标准化协议来作为协同信息的具体承载形式,方便了各协同应用之间的消息解析与加工、方便了服务器对消息进行解析与处理。首先,本文深入研究了计算机支持的协同工作(CSCW),研究了C/S架构下与传统B/S架构下各种通信技术的原理及实现,包括MINA框架的内部构造、BOSH技术的原理等,并且重点研究了WebSocket的工作原理及实现方式。其次,设计并实现了一个应用协同服务,支持包括WebSocket技术在内的多种通信技术,实现了异构应用间的一对一协同与群组协同。初步设计了一个基于WebSocket的客户端,支持协同信息的接收与发送

5、。最后,设计了一个实验,验证了基于WebSocket的异构应用协同服务可以支持包括WebSocket在内的多种异构应用之间的协同,验证了基于WebSocket的协同应用在性能、带宽占用、响应速度上和传统B/S架构下协同应用所具有的优势。本文所提出并且实现的基于WebSocket的异构应用协同服务实现了包括WebSocket在内的多种网络通信技术,支持采用不同连接技术的多种客户端之间的一对一协同工作与群组间协同工作,采用了分层设计,将连接、会话、数据处理等功能进行了明确的划分,以提高其工作稳定性,并且使其具有良好的可扩展性,保证了未来对其它通信技术增加支持的可行性。关键词:计算机支持的协同工作,

6、服务器主动推送,WebSocket,HTML5,XMPPABSTRACTWith the continuous increase of the network bandwidth,with users gradual increment of need for easy-used applications,with the cloud services gain their popularity,more and more people choose to finish their word through the browser besides using applications unde

7、r the C/S structure.At the same time,in the duration of cooperative work,cooperative work between multy-applications has become a tendency.How to solve the problem of providing the ability to launch cooperative work with applications under the B/S structure and launch cooperative work between applic

8、ations under the B/S structure and the C/S structure is very importent.To support the multy-applications in the cooperative work and make it possible to do cooperative work between applications under C/S structure and applications under B/S structure,a Collaboration server for heterogeneous applicat

9、ions Based on WebSocket is designed and implemented.This server supports various of communication protocols including the Bidirectional-streams Over Synchronous HTTP(BOSH) and WebSocket and can support applications under the C/S structure and applications under the B/S structure at the same time.The

10、 Collaboration server for heterogeneous applications Based on WebSocket use the Extensible Messaging and Presence Protocol(XMPP) to carry the cooperative work messages ,whick makes it easier for encoding and decoding between applications and analysis in server.First,The Computer-Supported Cooperativ

11、e Work(CSCW) and the various of technology used to communicate under the C/S structure and the B/S structure are studied,especially the WebSocket protocol is carefully studied. Secondly,A server supports cooperative work between multy-applications including WebSocket applications is designed and imp

12、lemented. A application uses WebSocket is designed and implemented which supports receiving and sending cooperative work messages.Finally,An experiment is made and experimental results shows that the cooperative work based on WebSocket saves more bandwidth and has less time-delay than the cooperativ

13、e work based on traditional technology.The Collaboration server for heterogeneous applications Based on WebSocket implemented supports cooperative work between multy-applications including WebSocket applications.The server uses hierarchical design,has layers including connection layer,session layer,

14、data-analysis layer and so on,makes it has a good stability and scalability and is ready for extension in the future.Keywords: Computer-Supported Cooperative Work, Server-Side information push, WebSocket, HTML5, XMPP目 录摘 要iABSTRACTii第一章 绪论11.1 课题背景与意义11.2 国内外研究现状21.2.1 技术现状及发展趋势21.2.2 国外研究现状21.3 本文目

15、标及主要内容31.4 论文组织结构4第二章 相关技术概述52.1 异构应用协同52.2 WebSocket协议52.3 XMPP协议6第三章 协同通信技术分析93.1 C/S架构下通信技术分析93.1.1 NIO概述93.1.2 基于MINA的通信技术分析113.2 BOSH通信技术初步分析143.3 WebSocket技术分析143.3.1 WebSocket在网络分层结构中的位置143.3.2 会话建立与收发153.3.3 WebSocket握手信息163.3.4 WebSocket帧结构163.3.5 WebSocket关闭183.3.6 WebSocket子协议19第四章 协同服务设计

16、与实现214.1 需求分析214.1.1 异构应用协同服务需求分析214.1.2 所需支持的协议224.2 服务器设计224.3 服务器实现254.3.1 应用服务器选择254.3.2 服务器各模块设计与实现314.3.3 三种传输协议的实现414.3.4 数据库设计46第五章 浏览器端WebSocket客户端初步实现535.1 浏览器端WebSocket535.2 浏览器端XMPP库:strophe.js575.3 WebSocket客户端初步构建57第六章 功能验证与性能分析616.1 功能验证616.2 性能分析636.2.1 网络流量分析及对比646.2.2 延迟分析及对比66第七章

17、结束语697.1 论文现有工作总结697.2 下一步研究工作70参考文献71致 谢72在学期间发表的学术论文及取得的研究成果73图表目录图3.1 BIO消息传输10图3.2 NIO消息传输10图3.3 MINA工作流程11图3.4 IoService接口12图3.5 IoService接口13图3.6 BOSH信息传输流程14图3.7 网络模型15图3.8 WebSocket握手过程15图3.9 WebSocket帧结构17图4.1 服务器分层结构23图4.2 服务器模块图24图4.3 服务器信息流向25图4.4 Jetty构造26图4.5 HttpListener接口27图4.6 HttpC

18、ontext接口27图4.7 Jetty流程28图4.8 WebSocket构造29图4.9 WebSocket建立过程29图4.10 WebSocket接口31图4.11 Connection接口31图4.12 Connection模块类图32图4.13 Session模块类图33图4.14 Router模块类图35图4.15 RouteTable模块类图35图4.16 IQHandler模块类图36图4.17 PresenceUpdater模块类图36图4.18 创建空间流程图38图4.19 空间内收发协同信息流程图39图4.20 WebSocket实现类图43图4.21 WebSocke

19、t序列图44图4.22 NIO连接实现类图44图4.23 BOSH连接实现类图45图4.24 数据库概念设计图46图4.25 数据库逻辑模式图48图4.26 数据库物理模式图51图5.1 WebSocket客户端结构58图6.1 C/S下一对一协同信息收发61图6.2 B/S下一对一协同信息收发62图6.3 C/S下群组协同信息收发62图6.4 B/S下群组协同信息收发63图6.5 C/S架构下流量截图64图6.6 BOSH下流量截图64图6.7 WebSocket下流量截图64图6.8 流量消耗对比66图6.9 时延对比67表4.1 WebSocket接口一览表30表4.2 数据库E-R实体

20、表47表4.3 数据库实体:用户48表4.4 数据库实体:联系人49表4.5 数据库实体:联系人分组49表4.6 数据库实体:离线消息49表4.7 数据库实体:服务器属性49表4.8 数据库实体:协同空间服务49表4.9 数据库实体:协同空间50表4.10 数据库实体:协同空间用户50表4.11 数据库实体:协同历史消息50表5.1 浏览器端WebSocket事件54表5.2 浏览器端WebSocket方法55表5.3 浏览器端WebSocket状态56表6.1 服务器处理消息消耗流量对比65表6.2 服务器保持连接消耗流量对比65 第一章 绪论1.1 课题背景与意义在当前协同工作中,协同服务

21、一般只基于某一种通信协议,支持此通信协议下的某一种类协同应用。随着技术的不断发展、网络速度的不断增加、人们对于Web应用需求的日益提高、终端设备的日益多元化,越来越多的系统开始提供B/S架构下的服务,各种新的通信技术与通信协议,尤其是基于B/S架构的通信方式不断出现。但是当前的协同服务不能很好地对其进行支持,尤其是不能提供良好的对B/S架构下应用的支持。基于B/S架构的系统一般以HTTP协议为基础。HTTP协议的特点是以“请求-响应”为基本逻辑,即用户通过浏览器向服务器发送一条请求,服务器将请求的结果返回给用户。因为这种逻辑缺少对服务器主动推送信息的支持,会在协同的过程中造成很大的不便;另外,

22、HTTP协议的协议头会占用大量的带宽,在传输消息时会产生大量的无用信息。所以,基于HTTP协议的协同信息通信系统都会有消息传输延迟高、带宽占用高等缺点。在协同工作中,由于协同工作产生消息数据量巨大、协同信息交换频繁、对传输延迟尤为敏感等特点而更加明显。所以当前阶段B/S架构下的协同工作性能非常低下,急需解决。为了克服当前B/S架构下协同工作的缺点,一个解决方案就是将WebSocket技术引入协同服务。WebSocket技术是一个基于B/S的全双工通信技术,可以为浏览器与服务器之间提供专用双向数据通道,方便数据的收发,大大降低信息传输延时,减少带宽占用。为了对异构应用协同,尤其是B/S架构下应用

23、和其他应用之间的协同工作提供更好的服务,本文探讨了基于WebSocket协议来进行异构应用协同的可行性、如何建立一个基于WebSocket的异构应用协同服务,实现了一个支持WebSocket技术及其它多种连接技术的协同服务,并且对其功能和性能进行了验证。主要完成的功能为:(1) 基于WebSocket的应用之间的一对一协同。(2) 基于WebSocket的应用与其他异构应用之间的一对一协同。(3) 基于WebSocket的应用与其他异构应用之间的群组协同。本文通过将WebSocket技术应用到协同服务之中,使协同服务同时支持包括WebSocket协议在内的多种协议下的客户端,使采用不同协议的客

24、户端之间可以进行协同工作,有效地提高了协同工作的工作效率,提高了协同工作的工作能力,并且通过良好的服务设计方式,让服务可以方便地增加对其它通信协议的支持,为将来进一步扩展协同服务的服务能力,提高协同工作的工作效率打下了坚实的基础。1.2 国内外研究现状1.2.1 技术现状及发展趋势当前的协同过程中所用到的信息传输技术,主要有C/S架构下的socket、B/S架构下的轮询、长轮询等技术。传统的协同系统设计中,因为网络环境的限制,考虑到数据传输的速度和及时性,往往采用C/S架构来进行协同系统设计。这种架构下需要安装客户端,有升级繁琐、占用客户端资源等缺点。随着网络的不断发展,越来越多的协同系统开始

25、采用B/S架构。在其实现方式中,有轮询、长轮询、流、Flash等方式来实现服务器主动推送信息。其中,轮询方式是在特定的时间间隔内由浏览器对服务器发出HTTP REQUEST,然后由服务器返回最新的数据给客户端1,这种方式除了大大降低了带宽使用效率外,更是造成信息更新不及时;长轮询方式是在正常的通信之外,浏览器和服务器之间需要另外开辟一条通路,来不断的保持一个特殊信息来用于服务端主动推送数据,结果是降低了带宽使用效率;流的方式是使用一个窗口向服务器发出长连接请求,但是将这个窗口做成一个隐藏页面,同时,当服务器收到长连接请求后,不断更新连接状态,将信息发向客户端。兼容性差,浪费了服务器资源;Fla

26、sh方式较上面几种方式是一种全新的思路,因为Flash自身内部有socket实现,所以由javascript调用Flash,利用Flash完成数据交换。这种方式效率更高,在现阶段也可以有较广泛的应用。但是,Flash并不被所有的生态环境所支持,对于android设备的支持也不好,这就造成在移动终端使用这种技术几乎成为不可能,再加上2012年6月,Flash不再支持android4.1后续系统,决定了这种方式在现在越来越重要的移动终端领域必将被抛弃。随着HTML5的发展,越来越多的浏览器新特性让服务器主动推送变得更为简单,其中重要的一个技术就是WebSocket技术。WebSocket是一种在浏

27、览器和服务器之间进行类Socket通信的协议,浏览器和服务器会在通信初始进行一次握手,握手之后会形成一个专用的数据通道,所有的数据都可以实时地从这条数据通道中进行实时而快速的传输,从而让信息的实时交互变为可能。可以预见,在将来会有越来越多的协同系统采用WebSocket技术。1.2.2 国外研究现状当前外军协同工作中,主要使用了基于flash的服务器主动推送技术。美国政府为了提高美军及其相关组织的信息优势和决策优势,在异构的部队、军种、组织机构中实现信息的无缝连接和实时共享,在水平的跨域系统和垂直的指挥系统之间联合操作,美国国防部提出了2020联合构想。基于这一理念,美军完成了国防部联合在线系

28、统(DCO)的建设。DCO提供包括文件和媒体在内的广泛的信息共享和交互,是美国国防部指定的同步/异步协同指挥作战平台。所有军队人员及军队相关机构均能够通过国防部联合在线系统进行战略、战术上异构的任务。国防部联合在线系统支持即时文字消息,多媒体远程会议,协同电子白板以及桌面共享等多种方式,提供了一个可靠的信息处理平台。美军国防部联合在线系统的状态呈现、感知服务、文字交互的能力都是基于XMPP协议来进行实现,能够兼容XMPP客户端,可以对各种不同的异构客户端进行有效支持,扩展性高;另外,为跨域协同指挥提供支持的美军Trident协同网关也对XMPP协议提供支持。随着以Flash方式实现服务器主动推

29、送信息技术的出现,DCO系统也开始使用这种技术来进行信息的传输与共享。这种方式较以往的实现技术来说速度更快,消息推送更加及时,但是也有其明显的缺点。因为是以Flash为基础,所以有资源占有率高,对移动终端扩展性差等缺点。1.3 本文目标及主要内容本课题的主要工作是通过将WebSocket用于B/S架构下的服务器主动推送技术,为异构应用之间、尤其是C/S架构下应用与B/S架构下应用之间的协同工作提供更好的服务,使其具有更快的响应速度、更低的资源消耗、更快的数据传输,从而大大提高B/S架构下应用与C/S架构下应用之间的协同工作。具体从以下几个方面展开:(1) 研究了WebSocket的特点特性。详

30、细研究了WebSocket的特点和特性,在网络模型中所处的位置,工作流程,连接建立、断开、信息收发的逻辑流程的等基本原理。(2) 研究java应用服务器对websocket的支持方式及实现原理。详细研究了java应用服务器jetty对WebSocket协议的支持原理及实现方式,掌握了其提供的操作WebSocket的相关接口,比如建立连接、收发消息、断开连接等,为基于WebSocket的异构应用协同服务的设计和实现做好基础。(3) 根据XMPP协议流程,设计并实现一个异构应用协同服务。基于Jetty应用服务器,基于XMPP的协同流程,设计并实现一个支持WebSocket的协同服务。在此基础上,增

31、加对若干种传统B/S架构和C/S架构下应用的支持,完成基于WebSocket的异构应用协同服务。(4) 初步研究通过浏览器和服务建立WebSocket连接及收发信息的方式。初步了解了WebSocket作为B/S架构下服务器和浏览器之间建立连接、传输数据的方式,掌握了浏览器提供的相关接口,设计了一个简单的B/S架构下的WebSocket应用,来对服务进行功能方面及性能方面的测试。(5) 对协同服务进行对比测试,检测其功能特性和性能特性。通过网络抓包工具及XMPP服务测试工具,对基于WebSocket的异构应用协同服务进行功能测试和性能测试,对比其和传统B/S架构和C/S架构下应用在网络带宽、服务

32、器资源占用、消息收发时延等方面的优劣。1.4 论文组织结构本论文分为六章,各章主要内容如下:第一章,绪论。主要介绍了本课题的研究背景、研究内容、研究意义,另外,对国内外关于WebSocket的研究及使用概况进行了简要的介绍,并且基于此对本论文的主要内容及关键技术进行了简要的介绍。第二章,相关技术概述。主要介绍了本文所涉及的相关术语的具体解释及相关技术的概念,包括异构应用协同、WebSocket协议、XMPP等。第三章,协同通信技术分析。主要介绍了包括WebSocket、BOSH在内的一些通信技术的特点及工作原理,比如连接建立方式、数据传输特点、网络架构位置等等信息。第四章,协同服务设计与实现。

33、以前两章为基础,以Jetty作为java应用服务器,设计并实现了一个基于WebSocket的异构应用协同服务。第四章主要介绍了基于WebSocket的异构应用协同服务的组成架构、工作流程及关键步骤。第五章,浏览器端WebSocket客户端初步实现。主要介绍了如何通过浏览器建立和WebSocket服务器的连接,如何发送和接受WebSocket信息,如何将原始信息打包成XMPP标准信息,如何将XMPP标准信息进行解析,并且初步完成了一个基于Websocket的浏览器客户端。第六章,能力验证与性能分析。主要介绍了如何通过网络抓包工具及XMPP服务测试工具对基于WebSocket异构应用协同服务所支持

34、的各种异构应用进行功能测试和性能测试,包括异构应用互联测试、异构应用协同测试、网络带宽测试、服务器资源占用测试、消息延迟测试等。第七章,结束语。主要是对本论文所进行的研究工作的的总结和展望。主要是总结了本论文所解决的主要问题、完成的主要工作,再次点明了本论文研究的重点,并对以后研究工作的进一步完善进行了展望。第2章 第二章 相关技术概述实现基于WebSocket的异构应用协同服务,首先要确定实现服务功能所需要依托的相关技术。本章介绍了本文所涉及的相关术语的具体解释及相关技术的概念,包括异构应用协同的概念、B/S架构下的通信技术WebSocket协议、协同信息的格式标准XMPP标准等。2.1 异

35、构应用协同异构应用是指一系列功能上相同或相似、结构上不同的应用。这些应用可以完成相似或相同的工作,但是其组成结构甚至工作环境都千差万别。从组成结构来说,有C/S架构下的应用,也有B/S架构下的应用;从工作环境来说,有运行于windows下的应用,也有运行于linux下的应用,甚至有运行在android或者iOS等移动终端下的应用。虽然这些应用工作在不同的环境下,但是其功能是相同或者相似的,甚至使用同一套数据库、连接同一个服务。异构应用协同,是指一系列异构应用之间能够进行互联互通,通过计算机技术和通信技术为不同地理位置的用户提供协同工作环境的解决方案,通过建立协同工作环境,改善人们信息交流的方式

36、,消除人们在时间和空间上相互分隔的障碍,提高群组工作的质量和效率2。广义上的协同可以分为同步协同和异步协同两种方式,在同步协同时,各异构应用在同一时间完成同一任务,在异步协同时,各异构应用在不同的时间完成同一任务。在本文中,异构应用协同所指的协同是同步协同,比如使用Windows客户端的用户A和使用浏览器的用户B进行屏幕共享、使用BOSH协议的用户C和使用WebSocket协议的用户D进行即时通信等等功能。2.2 WebSocket协议WebSocket协议是一种工作于浏览器和服务器之间的通信协议,为基于浏览器的协同工作提供基础。和http协议不同,WebSocket是一个全双工协议,支持浏览

37、器和服务器之间的双向同时信息发送3。http协议是基于请求响应模型,基本工作流程是浏览器给服务器发送一个请求(request),服务器在接收到请求之后将请求相对应的结果返回给浏览器(response),这就导致服务器很难主动将信息推送给客户端。而WebSocket通过建立联通浏览器和服务器的专用数据通道,使得客户端和服务器之间,尤其是服务器,可以主动推送信息。WebSocket协议是http协议的一个升级,是html5协议族中的一个协议4。因为其仍旧建立在浏览器之上,所以在建立连接时仍然需要通过http协议来完成连接握手。在建立连接时,浏览器首先向服务器发送一个特殊的http信息,服务器收到这

38、条特殊的http信息后,计算出相应的http格式返回信息,将其返回给浏览器,浏览器收到服务器的返回信息后,确认服务器支持WebSocket,再将一条确认信息返回给服务器,经过这样通过http的三次握手后,才正式建立起浏览器和服务器之间的WebSocket连接。WebSocket连接一旦建立,浏览器和服务器之间就可以进行数据交互了。2.3 XMPP协议XMPP协议是Extensible Messaging and Presence Protocol的简称,既可扩展消息和状态呈现协议。XMPP协议为协同工作过程中所产生的协同信息内容提供标准,使所有的协同信息都遵循同一套格式,以便异构应用之间可以方

39、便地互相理解5。XMPP协议是基于XML(可扩展标记语言)的协议,主要用来承载应用和应用之间交互时所产生的即时消息和状态标记等等。具有完善性高、可扩展性好、易跟踪易理解的优点。XMPP协议以Jabber协议为基础来设计,是专门用于即时消息的协议。和XML一样,XMPP协议具有良好的可扩展性和适应性,可以通过扩展来方便地在客户端和服务器之间发送的普通协同信息与控制信息,在服务器和客户端之间以流的方式进行传输,完成各种自定义的需求,拥有XML易于解析、抑郁阅读的特点,可以供开发人员与维护人员方便地进行阅读与调试。另外它也有Jabber的统一、开放的特性,使得基于XMPP的服务器与客户端更加规范、更

40、加标准,易于扩展。XMPP协议处于TCP/IP分层模型中的应用层,处于传输层TCP之上,和WebSocket协议处于同一层6。使用XMPP协议的各主体之间通过满足XMPP协议的XML流来进行信息交互。每一条XML流都是一个信息交互de 基本单位,一般会包含XML流的发出者、接收者、流id、流类型、操作和信息等等内容。XMPP可以分为三种类型,即message、presence和IQ。其中message用来表示应用协同的过程中所产生的具体的协同信息及协同事务;presence用来表示协同应用的状态信息,比如在线、离线、被订阅等等状态;IQ用来表示协同过程中的请求和查询信息,有get、set、re

41、sult、error四种,其中get表示请求数据、set表示设置数据、result表示服务器返回给客户端的结果、error表示请求或者查询的过程中发生错误。XMPP协议的开放性和可扩展性使得其能够以一个更高层的、更规范的方式来传输即时消息,可以跨平台、跨应用、跨协议来进行消息的传递。在XMPP中,总共有三个角色,分别是服务器、组件和客户端7。服务器用来对客户端提供服务,承担了记录客户端信息、管理客户端连接、路由客户端信息等功能;组件用来对服务器进行一定程度或某一个方面的辅助,协助服务器完成网络通信,一般具有一定特殊性,带有一定业务特性;客户端用来帮助用户进行收发数据、处理业务、完成任务。XMP

42、P在这三者之间以纯文本XML的方式进行传输。每一条XMPP消息都成为一“节”或者“stanza”,在逻辑上相互独立,每一个stanza都承载着一条业务信息或者控制信息,是XMPP协议中用来传送信息的最基本的单位。XMPP中共有三种stanza类型,分别是“Message”、“Presence”和“IQ”,每一种stanza类型中又包含四个基本属性,分别是“from”、“to”、“type”、“xmlns”。其中,四个属性的作用分别为:(1) from:from代表stanza的发送方。发送方实体可以是客户端(用户名),也可以是服务器(域名),也可以是组件(组件名),也可以是协同空间(协同空间i

43、d)。(2) to:to代表stanza的接收方。一般由本条stanza的发送方指定。发送方实体可以是客户端(用户名),也可以是服务器(域名),也可以是组件(组件名),也可以是协同空间(协同空间id)。(3) type表示stanza子类型。type的取值一般会根据stanza类型的不同而不同,Message类型的节、Presence类型的节和IQ类型的节都会有自己专有的子类型。(4) xmlns又称为“命名空间”,服务根据命名空间的不同将stanza 交由不同的处理类进行处理。三种类型的作用分别为:(1) MessageMessage类型的节一般用于承载用户之间首发的即时交互信息,或者应用系

44、统主动发送的信息。其type取值一般有“chat”、“groupchat”、“error”等。chat表示一对一交互时所产生的数据,“group”表示群组交互时所产生的数据,“error”表示错误数据,一般会在服务器处理出现错误或者接收方不能对消息进行处理时发送。(2) PresencePresence类型的节一般用于表示自身状态,用于客户端。其type属性有以下几种,根据客户端实际的状态而不同,一般有“available”、“unavailable”和“error”等。“available”表示用户当前可用,可以给用户转发数据,“unavailable”表示用户当前不可用,不可给用户转发数据

45、,“error”表示在操作过程中出现了错误。(3) IQIQ类型的节一般用于请求或者消息查询。其type属性有“get”、“set”、“result”、“error”。其中get表示请求数据,set表示设置参数,result表示请求的结果,error表示操作过程中出现错误。客户端和服务器所处理的所有XMPP消息连在一起会形成一个完整XML文档,文档以开始,以结束,中间包含若干个stanza节。XMPP协议的核心就是通过stream将数据通过事先协商好的方式进行通信。在stream建立的同时建立连接,在stream关闭的同时关闭连接。XMPP有一个很重要的概念:地址。地址是XMPP中的统一资源定

46、位符,能唯一地定义XMPP中的资源。XMPP中的地址称为JabberID,一般情况下简称为JID,可以用来标识XMPP系统中的所有的XMPP实体。JID包含三个部分,分别是domain、node idenfitifer和resource。其中,domain一般代表XMPP服务器的名称,node identifer一般代表一些主动发送请求的实体,典型的比如客户端,resource一般代表会话或者连接,比如,通过spark(一个流行XMPP客户端)登陆的用户jid中的resource部分就会是”spark”。三个部分的排列如下:jid = node domain / resource 第3章 第三章 协同通信技术分析协同通信技术是协同工作的基础,协同服务必须支持某种协同通信技术,而基于WebSocket的异构应用协同服务必须对包括WebSocket技术在内的多种协同技术进行支持。为了基于WebSocket的异构应用协同服务设计与实现,必须首先分析协同服务需要支持的协同通信技术。本章介绍了常用的及新兴的几种网络通信技术,网络通信技术主要分为C/S架构下的通信技术及B/S架构下的通信技术,分别用于C/S架构下

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号