即时通讯的调研报告书.docx

上传人:小飞机 文档编号:1978043 上传时间:2022-12-29 格式:DOCX 页数:23 大小:207.99KB
返回 下载 相关 举报
即时通讯的调研报告书.docx_第1页
第1页 / 共23页
即时通讯的调研报告书.docx_第2页
第2页 / 共23页
即时通讯的调研报告书.docx_第3页
第3页 / 共23页
即时通讯的调研报告书.docx_第4页
第4页 / 共23页
即时通讯的调研报告书.docx_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《即时通讯的调研报告书.docx》由会员分享,可在线阅读,更多相关《即时通讯的调研报告书.docx(23页珍藏版)》请在三一办公上搜索。

1、即时通讯调研报告(一) 摘要:本文简述了技术通讯的发展现状,以及发展趋势 1概述1.1 IM技术概念IM技术全称Instant Messaging,中文翻译“即时通讯”,它是一种使人们能在网上识别在线用户并与他们实时交换消息的技术,是电子邮件发明以来迅速崛起的在线通讯方式。IM的出现和互联网有着密不可分的关系,IM完全基于TCP/IP网络协议族实现,而TCP/IP协议族则是整个互联网得以实现的技术基础。 最早出现即时通讯协议是IRC(Internet Relay Chat),但是可惜的是它仅能单纯的使用文字、符号的方式通过互联网进行交谈和沟通。随着互连网变得高度发达,即时通讯也变得远不止聊天这

2、么简单,自1996年第一个IM产品ICQ发明后,IM的技术和功能也开始基本成型,语音、视频、文件共享、短信发送等高级信息交换功能都可以在IM工具上实现,于是功能强大的IM软件便足以搭建一个完整的通信交流平台。目前最具代表性的几款的IM通讯软件有MSN、Google Talk、Yahoo Messenger、腾讯QQ等。1.2 IM技术原理和工作方式典型的IM工作方式如下:登陆IM通讯中心(IM通讯服务器),获取一个自建立的历史的交流对象列表(好友列表),然后自身标志为在线状态,当好友列表中的某人在任何时候登录上线并试图通过你的计算机联系你时,IM系统会发一个消息提醒你,然后你能与他建立一个聊天

3、会话通道进行各种消息如键入文字、通过语音等的交流。从技术上来说,IM的基本技术原理如下:1IM服务器2登陆或注销3用户A通过列表找到B,用户B获得的消息并与之交谈4通过IM服务器指引建立与B单独的通讯通道第一步,用户A输入自己的用户名和密码登录IM服务器,服务器通过读取用户数据库来验证用户身份,如果验证通过,登记用户A的IP地址、IM客户端软件的版本号及使用的TCP/UDP端口号,然后返回用户A登录成功的标志,此时用户A在IM系统中的状态为在线(Online Presence)。第二步,根据用户A存储在IM服务器上的好友列表(Buddy List),服务器将用户A在线的相关信息发送给也同时在线

4、的IM好友的PC机,这些信息包括在线状态、IP地址、IM客户端使用的TCP端口(Port)号等,IM好友的客户端收到此信息后将在予以提示。第三步是IM服务器把用户A存储在服务器上的好友列表及相关信息回送到他的客户端机,这些信息包括也在线状态、IP地址、IM客户端使用的TCP端口(Port)号等信息,用户A的IM客户端收到后将显示这些好友列表及其在线状态。1.3 IM通讯方式1.3.1在线直接通讯如果用户A想与他的在线好友用户B聊天,他将直接通过服务器发送过来的用户B的IP地址、TCP端口号等信息,直接向用户B的PC机发出聊天信息,用户B的IM客户端软件收到后显示在屏幕上,然后用户B再直接回复到

5、用户A的PC机,这样双方的即时文字消息就不再IM服务器中转,而是直接通过网络进行点对点的通讯,即对等通讯方式(Peer To Peer)。1.3.2在线代理通讯用户A与用户B的点对点通讯由于防火墙、网络速度等原因难以建立或者速度很慢,IM服务器将会主动提供消息中转服务,即用户A和用户B的即时消息全部先发送到IM服务器,再由服务器转发给对方。1.3.3离线代理通讯用户A与用户B由于各种原因不能同时在线的时候,如此时A向B发送消息,IM服务器可以主动寄存A用户的消息,到B用户下一次登陆的时候,自动将消息转发给B。1.3.4扩展方式通讯用户A可以通过IM服务器将信息以扩展的方式传递给B,如短信发送方

6、式发送到B的手机,传真发送方式传递给B的电话机,以email的方式传递给B的电子邮箱等。早期的IM系统,在IM客户端和IM服务器之间通讯采用UDP协议,UDP协议是不可靠的传输协议,而在IM客户端之间的直接通讯中,采用具备可靠传输能力的TCP协议。随着用户需求和技术环境的发展,目前主流的IM系统倾向于在IM客户端之间、IM客户端和IM服务器之间都采用TCP协议。即时通讯相对于其他通讯方式如电话、传真、email等的最大优势就是消息传达的即时性和精确性,只要消息传递双方均在网络上可以互通,使用即时通讯软件传递消息,传递延时仅为1秒种1.4兴起的嵌入式IM工具传统的IM在统治了互联网即时通讯领域长

7、达十年之久,以其日趋稳定的性能,与较强的用户黏着度,至今仍统治着这个巨大的市场。然而,软件行业的技术精英们,并不满足于此。他们厚积薄发,一直致力于开发出性能更为优越的即时通讯工具。当然,在功能上的不断完善,自然是一个必然的发展方向,在Web2.0时代,如何大力增强用户对网站的黏着度,而不仅仅是对于IM的拥附,已经成为他们的主攻方向了。于是,嵌入式IM工具,应运而生了。相对以往的传统的即使沟通工具,它们需要用户下载软件包,需要用户进行安装。对于拥有IM产品的网站而言,用户在登陆网站后,不能直接使用其IM工具,对于流量与用户的黏着度,都是有一定影响的。因此在IM与网站相互依存的今天,没有哪家网络公

8、司,愿意将IM工具孤立开来。于是,目前,一种新型的嵌入式IM工具就应运而生了。这种IM工具,不需要下载安装,当用户登陆网页后,该IM直接嵌套在网页中,可以直接使用。而在功能上,则一点也不输于传统的IM,无论是传统的文字沟通的速度与效率,还是近年来越来越成为IM工具必备的音频/视频功能,这种嵌入式IM都能提供非常稳定的传输。更值得一提的是,因为嵌入式IM是嵌套在网页上的,软件供应商,可以根据网站需求,设计出适合网站风格的IM产品。而不是像传统的IM工具,千篇一律,毫无个性可言。目前,这类嵌入式IM在社区、交友、社团及协作等类型的网站上,应用已经较为广泛。在Web2.0时代,将发挥越来越重要的作用

9、。2即时通讯协议IM(Instant Messaging)正在被广泛地采用,特别是在公司与它们的客户互动联接方案上。为了解决即时通讯的标准问题,IETF成立了专门的工作小组,研究和开发与IM相关的协议。目前IM有四种协议:即时信息和空间协议(IMPP)、空间和即时信息协议(PRIM)、针对即时通讯和空间平衡扩充的进程开始协议SIP(SIMPLE)以及XMPP。PRIM与XMPP、 SIMPLE类似,但已经不再使用了。2.1 IMPPIMPP主要定义必要的协议和数据格式,用来构建一个具有空间接收、发布能力的即时信息系统。到目前为止,这个组织已经出版了三个草案RFC,但主要的有两个:一个是针对站点

10、空间和即时通讯模型的(RFC 2778);另一个是针对即时通讯/空间协议需求条件的(RFC2779)。RFC2778是一个资料性质的草案,定义了所有presence和IM服务的原理。RFC2779定义了IMPP的最小需求条件。另外,这个草案还就presence服务定义了一些条款,如运行的命令、信息的格式,以及presence服务器如何把presence的状态变化通知给客户。2.2 SIP/SIMPLESIMPLE是目前为止制定的较为完善的一个。SIMPLE和XMPP两个协议,都符合RFC2778和RFC2779 。SIMPLE计划利用SIP来发送presence信息。SIP是IETF中为终端制

11、定的协议。SIP一般考虑用在建立语音通话中,一旦连接以后,依靠如实时协议(RTP)来进行实际上的语音发送。但SIP不仅仅能被用在语音中,也可以用于视频。SIMPLE被定义为建立一个IM进程的方法。SIMPLE在2002年夏季得到额外的信任,目前,微软和IBM都致力于在它们的即时通讯系统中实现这个协议。SIMPLE小组致力于进程模式的操作,这将提升运行效率,使基于SIP的机制能够进行会议和三方电话交谈控制,也考虑到能和未来提供的许多新特性实现兼容并提升表现能力。有了进程模式,SIMPLE使用SIP来建立一次进程,再利用SDP(进程描述协议)来实际传输IM数据。SIMPLE是SIP for Ins

12、tant Messaging and Presence Leveraging Extensions的缩写, 其目标是将SIP协议应用于IM 和出席检测业务。因为SIP和IMPP所提出的RFC2779中的要求有许多共同之处,加上SIP已受到较广泛的支持而且相对较成熟,故采用SIP实现IMPP是很自然的选择。SIP(Session Initiation Protocol)协议是由IETF提出的一种用于IP网络多媒体通信的应用层控制协议,其主要功能是创建、修改、终结和管理多媒体会话或呼叫,SIP协议的语法和语义在很大程度上借鉴了SMTP和HTTP的机制,使用C/S通信模式以及文本形式的消息编码。本质

13、上,SIP提供以下功能:名字翻译和用户定位:无论被呼叫方在哪里都确保呼叫达到被叫方;执行所有描述信息到定位信息的映射;确保呼叫(会话)的本质细节被支持。特征协商:它允许与呼叫有关的组在支持的特征上达成一致。呼叫参与者管理:呼叫中参与者能够引入其他用户加入呼叫或取消到其他用户的连接,支持呼叫转移和呼叫保持。呼叫特征改变:用户能够改变呼叫过程中的呼叫特征。例如,某次呼叫开始时被置为voice2only,但用户可以在呼叫过程中按需开启视频功能,新加入呼叫的第三方也可以开启不同的特征。多数即时消息和出席检测架构可以不加修改地利用SIP中已有的特性。例如,一个IM客户机向SIP注册服务器发送REGIST

14、ER消息,通知它可以接收IM,注册服务器采用与SIP系统中其他规则相同的方法来处理登录请求。不过, SIP缺乏消息路由机制,不完全符合IMPP,还需对其进行一定的扩展,目前SIMPLE工作组已经提交了3项RFC和17项草案。SIMPLE在本质上与SIP相同,没有采用GET和POST等数据存取方法,而采用INV ITE和BYE等信令方法来启动和结束一次呼叫或会话。SIMPLE增加了一种称为MESSAGE的新的请求方法来发送一次性的短消息,即寻呼机模式的IM;用SUBSCR IBE发送对出席消息的询问,用NOTIFY传输出席消息。在持续较长的IM会话中,参与者在一段时间内交换多条消息,这时就要用到

15、INV ITE信令和一种称为消息会话中继协议(MSRP)的传输协议;文本通过MSRP传输,话音和视频数据则和其他SIP应用一样用RTP来传输。2.3 Jabber/XMPPXMPP是一种基于XML的协议,它继承了在XML环境中灵活的发展性。这表明XMPP是可扩展的。可以通过发送扩展的信息来处理用户的需求,以及在XMPP的顶端建立如内容发布系统和基于地址的服务等应用程序。而且,XMPP包含了针对服务器端的软件协议,使之能与另一个进行通话,这使得开发者更容易建立客户应用程序或给一个配好系统添加功能。XMPP目前在免费源代码开放Jabber IM系统中被广泛采用。2002年,这个产品有超过5万的下载

16、量。XMPP拥有成千的Jabber开发者,以及大约数万台配置的服务器和超过百万的终端用户。在XMPP能够成为标准前,还需要努力克服它本身的缺点。对于网络协同工作者而言,需要加强安全性和互连性。XMPP(Extensible Messaging and Presence Protocol,可扩展的消息和出席协议)是一种基于XML的传递出席信息(Presence)和消息路由的协议,它为不同的网络之间互联提供了一种安全而简单的编程语言,是Jabber系统(一种开放源代码的IM系统)的基础,IETF成立了XMPP工作组并已发布了若干项草案。XMPP路由的核心是一种类似于电子邮件的逻辑编址方案,在Jab

17、ber系统中,这一地址被称为Jabber ID,其形式为。XMPP的工作方式也与简单邮件传输协议(SMTP)相似,地址中的域(有相应的服务器)可以用普通的DNS系统来解析,由服务器来转发用户的消息。与SMTP不同的是,节点(node)部分既可以表示用户,也可以表示应用或服务;resource是连接识别标记,允许同一个客户在同一个时刻多次登录服务器。当节点连接到一台服务器时,它们利用来自本地目录系统的证书进行鉴权、指定资源并通知服务器向订阅者(比如说列在好友名单上的用户)发出出席公告。服务器之间能相互发现、连接和认证,不管某节点的本地服务器(域)是什么,只要不违反保密或业务规则,它都可以通过服务

18、器的转接而连接到XMPP社区中的任意其他节点。每个XMPP节(stanza)都是标有JID地址的XML结构化数据块,节的类型可以通过恰当的命名空间XML结构化数据加以扩展。正如W3C是Web格式的标准化主体,Jabber软件基金(JSF)是XMPP节类型扩展的标准化主体,不过,任何其他组织都可以按需确定事实上的标准格式。XMPP将出席(Presence)和相关的消息嵌入XML 结构化数据之中,使之能有效地路由至最合适的资源,起到了通用的XML结构化数据传输层的作用,这种层次结构最大程度地简化了客户端的实现。JSF提供了到其他IM系统的网关规范,只要网关支持,客户端就可以与其他IM系统交流。说明

19、:综合考虑功能、扩展能力和成熟度等各方面特征,两种协议各有特色,其对比如表1 SIMPLE与XMPP协议的比较所示。表1 SIMPLE与XMPP协议的比较SIMPLE XMPP基础SIP协议 XML协议成熟度较为成熟 新兴技术功能支持各种即时消息通信 支持各种即时消息通信扩展能力一般很强主流厂商的支持微软、IBM、SUNOracle、Google前景将率先广泛应用 后来居上SIP已经在网络电话等领域得到了较广泛的应用,出现了大量的产品和方案,对现有SIP系统进行一定的修改后就能支持SIMPLE , 这是SIMPLE最大的优势。从产业上看,微软已经选择SIP作为其实时通信策略并在WindowsX

20、P,Pocket PC和MSN Messenger中进行了部署, IBM也在大力地推进SIP的应用。微软公司宣布其Live Communications Server 2005将使用户能够与雅虎,AOL的即时通信服务的用户互联互通,进一步增强了SIMPLE作为标准化IM协议的强势地位。XMPP的优势在于灵活和开放。它具有XML带来的与生俱来的扩展性,任何人都可以用扩展的XML 信息来处理客户的特殊要求并在XMPP基础上构建新的应用。例如, CRM或别的企业应用系统可以作为一个XMPP的客户端注册到服务器上,在管理员许可的前提下,用户或别的应用能发现CRM的状态并向其发送数据、对其进行操作。利用

21、XMPP作为通用的传输机制,不同组织内的不同应用都可以进行有效的通信。由于XML很易穿过防火墙,所以用XMPP构建的应用不易受到防火墙的阻碍。从产业上看, XMPP起源于开放源代码的Jabber系统,现在已有了大量使用该协议的IM系统,目前SUN和Oracle已经在它们的IM系统中使用XMPP,而Google也可能在其IM系统中使用这一协议。SIMPLE和XMPP各有其优势,前者有较成熟的应用基础和主流IM服务商的支持,在未来一段时间内可能会成为主要的标准化IM协议;后者发挥了XML的优势,随着XML的发展,它的应用会越来越普及。在相当的一段时间内仍会出现两种标准系统共存的状况,所以这两种系统

22、之间的互联就成了一个新的问题。不过, XMPP支持网关扩展,用XMPP2SIP网关可以实现两类系统间的互联。3 Web IM 实现技术3.1基于插件的技术如ActiveX,插件相对稳定,但插件需要用户自己允许并下载安装,而大多数用户担心安装了黑客软件或插件对计算机系统不好而不愿意安装,并且上网助手等软件也拦截插件,导致很多用户无法使用。另外,ActiveX受平台限制,只能在IE下使用。3.2基于Flash的技术典型的如Yahoo web messenger,结合Flash和Ajax,3.3纯粹的基于HTTP的技术前端使用Ajax的Web IM:meebo, ebuddy, ILoveIm, M

23、SN Web Messenger, KoolIM等。后台使用comet的Web IM:meebo, gtalk等。只有ebuddy支持wap4服务器端实现方式优点循环的面向连接的方式调试、编程、维护、修改容易1.服务器一次只能处理一个客户机的请求,可能造成客户端请求的拒绝或响应变慢;2.客户机无法知道服务器是否收到了其它客户机发给它的信息;3.服务器对客户机的处理是按照连接请求的先后顺序进行,与一个客户机的通讯故障可能对后续客户造成影响。缺点多进程并发方式并行化、简单有序、互不干扰、事务化1.创建进程需要一定的时间开销;2.考虑如何实现多个进程之间的互不干扰;3.占用较多的系统资源缺点多线程并

24、发方式除了具有多进程并发方式的优点外,与多进程相比:1.线程节约系统的资源;2.创建时的时间开销小;3.减小了对服务器资源的消耗缺点1.需要采用同步机制实现多个线程之间的同步与互斥;2.程序的编写、调试、维护难度大5流行即时通讯系统分析Web QQ是国内最为流行的聊天工具QQ的网页式聊天工具,国外没有相关的服务是提供给QQ的,马化腾不失时机地做了基于Web浏览器的IM服务,所谓是web2.0的大势所趋。功能特点:因为用户群过于庞大,非常有发展潜力。目前Web QQ同样在测试阶段,只支持IE6.0的浏览器。其在线主界面保持了客户端QQ主界面的风格,在操作上可以使用快捷键;不提供聊天记录保存、语音

25、视频聊天、文件传输等功能,纯属客户端QQ的精简版。Web MSN通过试用发现,在线方式不支持视频聊天,也不能保存聊天记录;在线方式由于精简了功能,使得聊天窗口弹出及具体的文字聊天速率较理想;对浏览器的支持较好,适用于IE5.0或更高版本、Netscape 7.1 或更高版本、Mozilla1.6或更高版本、Maxthon1.5或更高版本等。总的说来功能较单一。即时消息是Windows Messenger中的一种通信和协作的模式。IM对话中使用的初始化和通信协议依所选择的服务器或服务而定。对于.NET Messenger或Exchange IM,IM文本是通过TCP连接进行传送的。当使用SIP

26、Proxy服务器时,可以对服务器进行配置,以使用TCP UDP或安全套接层(Secure Sockets Layer,SSL)-贯穿TCP的安全协议-传输IM文本。发起对话的客户向服务器发送一个请求,邀请与联系人开始对话。在服务器将邀请发送到联系人后,就可以进行IM通信了。 消息文本通过服务器发送给对方。消息文本的定义依采用的服务器和协议而不同,通常为HTTP消息,由服务器将其封装在TCP连接中,内部包含超文本传输协议(Hypertext Transfer Protocol,HTTP)或可扩展标记语言(Extensible Markup Language,XML)。当使用SIP IM时,可以设

27、置在同级之间直接传送消息文本。但是采用SIP Proxy服务器的话,就需要对服务器进行配置。Gtalk在此在线IM方式中,同样不能实现网络通话功能(需通过下载Google Talk 客户端实现);电子邮件和即时聊天在同一页面完成,方便快捷;在浏览器支持方面做得不够,适用于IE 6.0 以上和 Firefox 1.0 以上版本。最有特色的是其聊天记录的保存和直接回复功能。基于 Iframe 及 htmlfile 的流(streaming)方式iframe 是很早就存在的一种 HTML 标记, 通过在 HTML 页面里嵌入一个隐蔵帧,然后将这个隐蔵帧的 SRC 属性设为对一个长连接的请求,服务器端

28、就能源源不断地往客户端输入数据。图 3. 基于流方式的服务器推模型上节提到的 AJAX 方案是在 JavaScript 里处理 XMLHttpRequest 从服务器取回的数据,然后 Javascript 可以很方便的去控制 HTML 页面的显示。同样的思路用在 iframe 方案的客户端,iframe 服务器端并不返回直接显示在页面的数据,而是返回对客户端 Javascript 函数的调用,如js_func(data from server )。服务器端将返回的数据作为客户端 JavaScript 函数的参数传递;客户端浏览器的 Javascript 引擎在收到服务器返回的 JavaScri

29、pt 调用时就会去执行代码。从 图 3 可以看到,每次数据传送不会关闭连接,连接只会在通信出现错误时,或是连接重建时关闭(一些防火墙常被设置为丢弃过长的连接, 服务器端可以设置一个超时时间, 超时后通知客户端重新建立连接,并关闭原来的连接)。使用 iframe 请求一个长连接有一个很明显的不足之处:IE、Morzilla Firefox 下端的进度栏都会显示加载没有完成,而且 IE 上方的图标会不停的转动,表示加载正在进行。Google 的天才们使用一个称为htmlfile的 ActiveX 解决了在 IE 中的加载显示问题,并将这种方法用到了 gmail+gtalk 产品中。Alex Rus

30、sell 在 What else is burried down in the depths of Googles amazing JavaScript?文章中介绍了这种方法。Zeitoun 网站提供的 comet-iframe.tar.gz,封装了一个基于 iframe 和 htmlfile 的 JavaScript comet 对象,支持 IE、Mozilla Firefox 浏览器,可以作为参考。(请参见 参考资源)sigslot是一个线程安全、类型安全,用C+实现的sig/slot机制(sig/slot机制就是对象之间发送和接收消息的机制)的开源代码库网易POPO从登录速度上,网页版网

31、易POPO是最快的,基本上瞬间就可登录到使用界面。同样地,它也不能实现多媒体聊天功能;而且也不能保存聊天记录;未提供好友删除及好友分组的管理功能;适用于各版本浏览器。WebQQ WebMSN Gtalk WebPOPO登录速率理想一般一般理想头像更改否否否否呢称更改否否否是好友添加是是是是好友管理否否是否聊天记录管理否否是否界面美观度理想理想一般理想总体印象较好一般一般较好Sohu小纸条vqqvqqx-vqq围围圈是一款国内在线聊天室,分免费和VIP付费两种方式。提供自定义图标的功能非常新颖。功能特点:提供widget,把VQQ围圈圈聊天窗口嵌入在你自己的网页,自定义风格丰富,widget演示

32、-点击rorol网页右下角的绿色图标展开聊天室。radiusimradiusimx-基于ajax技术构建的在线web聊天服务,试用感觉不是很稳定,速度也比较慢. 支持的IM: Yahoo, AIM, MSN or GTalk功能特点:会自动检测你的地址位置,并在radiusim中置入GOOGLE MAP标识这个位置.通过拖拉GOOGLE MAP,你能发现在地图中标注出来的各地会员.如果你想去某个城市旅游,通过radiusim的地图找位会员先了解情况倒是不错的方法.MeeboMeebox-称得上网页聊天的元老级别了,不论功能还是界面设计来说都很讨人喜欢,有几十种国家语言版本,能很好的支持中文.现

33、在所看到的是新版的设计(原老版的报道). 支持的IM: AIM, Yahoo!, MSN, Google Talk, ICQ and Jabber功能特点:meebome提供widget,用户可自定义widget的标题和联系人名称,大小尺寸,和聊天模板的颜色。Skype1. 网络结构:1台服务器控制登陆,其余都是节点Node,拥有独立公网IP的节点为Super Node,其余为一般Node。普通Node必须通过Super Node才能加入Skype的世界。2. 采用STUN(Simple Traversal of UDP through NAT)和TURN(Traversal Using Re

34、lay NAT) 协议来检测所处的NAT及防火墙环境参见私网穿越技术在软交换体系中的应用(详解)3. 编解码器Global IP Sound在他的网站上专用明它为Skype提供点对点语音通讯软件:Global IP Sound provides voice processing software to Skypes peer-to-peer voice-communications。最大特点是音频动态范围超过普通电话,能够处理508000hz的声音,出来的效果自然要比PSTN3003400Hz好得多,声音更加圆润饱满 4.加密技术: AES控制信号采用TCP传输,数据传输采用UDP传输;6相关

35、技术简介6.1 Pushlets6.2 OpenfireOpenfire(原来的Wildfire)是一个跨平台,采用Java开发,开源的实时协作(RTC)服务器基于XMPP(Jabber)协议。Openfire安装和使用都非常简单,并利用Web进行管理。单台服务器可支持上万并发用户。6.7 JsonJSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999

36、的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C+, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。JSON建构于两种结构:名称/值对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。 值的有序列表(An ord

37、ered list of values)。在大部分语言中,它被理解为数组(array)。 这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。JSON具有以下这些形式:对象是一个无序的名称/值对集合。一个对象以(左括号)开始,(右括号)结束。每个名称后跟一个:(冒号);名称/值 对之间使用,(逗号)分隔。数组是值(value)的有序集合。一个数组以(左中括号)开始,(右中括号)结束。值之间使用,(逗号)分隔。 值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false

38、、 null、对象(object)或者数组(array)。这些结构可以嵌套。 字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。 字符串(string)与C或者Java的字符串非常相似。 数值(number)也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。空白可以加入到任何符号之间。 以下描述了完整的语言。参考文献:http:/xjson.org/json-zh.html6.8 Server Push技术推送技术(Server Pu

39、sh)的基础思想是将浏览器主动查询信息改为服务器主动发送信息。服务器发送一批数据,浏览器显示这些数据,同时保证与服务器的连接。当服务器需要再次发送一批数据时,浏览器显示数据并保持连接。以后,服务器仍然可以发送批量数据,浏览器继续显示数据,依次类推。客户端拉曳(Client Pull) :在客户端拖曳技术中,服务器发送一批数据,在HTTP响应或文档头标记中插入指令 ,让浏览器在5秒内再次装入这些数据或10秒内前往某URL装入数据。当指定的时间达到时,客户端就按照服务器的指示去做,或者刷新当前数据,或者调入新的数据。其实push 和 pull 这两种技术手段非常不同,但目的几乎一致,都是为了给最终

40、用户方便的提供最新信息。在服务器推送技术中,HTTP 连接一直保持着,直到服务器知道自己已结束发送数据并发送一个结束信号,或者客户端中断连接。而在客户端拖曳技术中,并不保持HTTP连接,相反,客户端被告知何时建立新连接,以及建立连接是获取什么数据。在服务器推送中,奇妙之处在于multipart/mixed格式的MIME,它能够使一个报文(或HTTP响应)包含许多数据项、在客户端拖曳中,奇妙之处在于HTTP响应头标(或等效的HTML元素),它能告知客户端在指定的延时时间后执行何种动作。服务器推送通常效率要比客户端拖曳效率高,因为它不必为后续数据建立新的连接。由于始终保持连接,即使没有数据传输时也

41、是这样,因此服务器必须愿意分配这些TCP/IP端口,对于TCP/IP端口数有限的服务器这将是一个严重的问题。客户端拖曳效率低,因为这必须每次为传送数据建立新的连接。但是它不必始终保持连接。在实际情况中,建立HTTP连接通常需要花费相当多的时间,多达一秒甚至更多。因此从性能上考虑,服务器推送对于最终用户更有吸引力,特别是对于需要经常更新信息的情况下。服务器推送相对客户端拖曳的另一点优势是,服务器推送相对比较容易控制。例如,服务器每一次推送时都保持一个连接,但它又随时可以关闭其中的任何连接,而不需要在服务器上设置特殊的算法。而客户端拖曳在同样的情况下要麻烦许多,它每次要与服务器建立连接,服务器为了

42、处理将客户端拖曳请求与特定的最终用户匹配等情况,需要使用相当麻烦的算法。 如果实现服务器推送的CGI程序是使用Shell脚本语言编写的,有时会存在一些问题。例如,客户端最终用户中断连接,Shell程序通常不能注意到,这将使资源毫无用处的浪费掉,解决这一问题的办法是用Perl或者C来编写这类CGI程序,以使用户中断连接时能够结束运行。如上所述,在服务器推送中,多个响应中连接始终保持,使服务器可在任何时间发送更多的数据。一个明显的好处是服务器完全能够控制更新数据的时间和频率。另外,这种方法效率高,因为始终保持连接。缺点是保持连接状态会浪费服务器端的资源。服务器推送还比较容易中断。接下来就大概说说服

43、务器推送技术。服务器在响应请求时,HTTP使用MIME报文格式来封装数据。通常一个HTTP响应只能包含一个数据块。但MIME有一种机制可用一个报文(或HTTP响应)表示将多个数据块,这种机制就是成为multipart/mixed的标准MIME类型。multipart/mixed报文大体格式如下:Content-type:multipart/mixed;boundary=ThisRandomString-ThisRandomStringContent-type:text/plain第一个对象的数据。-ThisRandomStringContent-type:text/plain第二个对象的数据。

44、-ThisRandomString-上述报文包括两上数据块,二者的类型都是text/plain。最后一个ThisRandomString后的两条短线(-)表示报文结束,后面没有数据。对于服务器推送,使用一个multipart/mixed类型的变种-multipart/x-mixed-replace。这里,x-表示属于实验类型。replace表示每一个新数据块都会代替前一个数据块。也就是说,新数据不是附加到旧数据之后,而是替代它。下面是实际使用的multipart/x-mixed-replace类型:Content-type:multipart/x-mixed-replace;boundary=

45、ThisRandomString-ThisRandomStringContent-type:text/plain第一个对象的数据-ThisRandomStringContent-type:text/plain第二个(最后一个)对象的数据。-ThisRandomString-使用这一技术的关键是,服务器并不是推送整个multipart/x-mixed-replace 报文,而是每次发送后数据块。HTTP连接始终保持,因而服务器可以按自己需要的速度和频率推送新数据,两个数据块之间浏览器仅需在当前窗口等候,用户甚至可以到其他窗口做别的事情,当服务器需要发送新数据时,它只是源(ABC输入法没那个字*&

46、$#)传输管道发送数据块,客户端相应的窗口进行自我更新。在服务器推送技术中,multipart/x-mixed-replace类型的报文由唯一的边界线组成,这些边界线分割每个数据块。每个数据块都有自己的头标,因而能够指定对象相关的内容类型和其他信息。由于multipart/x-mixed-replace的特性是每一新数据块取代前一数据对象,因而浏览器中总是显示最新的数据对象。multipart/x-mixed-replace报文没有结尾。也就是说,服务器可以永远保持连接,并发送所需的数据。如果用户不再在浏览器窗口中显示数据流,或者浏览器到服务器间的连接中间(例如用户按STOP按钮),服务器的推

47、送才会中断。这是人们使用服务器推送的典型方式。当浏览器发现Content-type头标或到达头标结束处时,浏览器窗口中的前一个文档被清除,并开始显示下一个文档。发现下一个报文边界时,就认为当前数据块(文档)已经结束。总之,服务器推送的数据由一组头标(通常包括Content-type)、数据本身和分割符(报文边界)三部分组成。浏览器看到分割符时,它保持状态不变,直到下一个数据块到达。将以上概念进行用编程方法实现,就可以得到实际的服务器推送程序。例如,下面的Unix shell程序将使浏览器每5秒显示一次服务器上的进程列表:#!/bin/shecho HTTP/1.1 200echo Content-type: multipart/x-mixed-replace; boundary=-ThisRandomString-echo echo -ThisRandomString-while truedoecho Content-type: text/html echo echo h2Processes on thi

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号