欢迎来到天天文库
浏览记录
ID:22023206
大小:273.50 KB
页数:5页
时间:2018-10-26
《websocket 在web 实时通信领域的研究》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、WebSocket在Web实时通信领域的研究基金项目:上海市高新技术产业化重点项目计划-基于第三代移动通讯网的移动互联网应用和服务平台作者简介:李代立(1986--),男,山东省济宁市人,硕士研究生,研究方向:嵌入式操作系统、系统软件支撑技术;陈榕(1957--),男,北京人,博士生导师,教授,中心主任,科泰世纪首席科学家,研究方向:嵌入式系统,构件技术。李代立,陈榕(同济大学基础软件工程中心上海200092)摘要:分析目前几种Web实时事件响应方案的特点,着重研究基于HTML5WebSocket的实时通信机制,并通过W
2、ebSocket与AJAX长轮询的实验对比,展示WebSocket在Web实时通信领域的应用开发方法和效率,为Web实时通信提供低延时、低网络吞吐量的解决方案。关键词:WebSocket;Web实时通信;AJAXTheResearchofWebSocketBasedonWebReal-timeCommunicationLIDai-li,CHENRong(SystemSoftwareEngineeringCentreofTongjiUniversity,Shanghai200092,China)Abstract:Somes
3、chemesandtheirfeaturesareintroducedonwebreal-timecommunications.Moreemphasisisputonstudyingreal-timecommunicationmechanismbasedonHTML5WebSocket.ThenacomparativeexperimentismadebetweenWebSocketandAJAXtorepresentthesimplemethodandhighefficiencyindevelopingreal-time
4、webapplicationsbyWebSocket.Atlastweprovidealowlatencyandlownetworkthroughputsolution.Keywords:WebSocket;Webreal-timecommunication;AJAX0.引言在Web应用高速发展的今天,Web即时数据通信变得越加强烈。HTTP协议[1]是Web实时通信的基础,浏览器与服务端建立连接浪费了大量时间和网络吞吐量,加重了服务端负担。HTML5WebSocket的实现使Web应用不需要每次都发起HTTP请求来建立
5、与服务端的连接,而是仅在第一次请求连接后就建立起TCPSocket连接,从而基本做到通信的时时响应,提高了通信效率。1.传统Web实时通信方案1.1HTTP拉取方式如图1所示,左侧为传统的web应用模型,可以通过设置""标签定时Request实现HTTPPull,右侧为AJAXWeb应用模型,可以通过XMLHttpRequest定时取服务器端数据实现。-5-图1传统Web应用模型与AjaxWeb应用模型该方案健壮易用的特点使其经常被应用于Web系统中,例如,Adap
6、tiveTTR[3]机制允许服务器改变TTR,客户端便能够依据数据的状态改变以不同频率来拉取数据。因此,这种动态TTR机制比静态TTR模式更好。但它并不能完全保证的数据精确度,会带来不必要的网络流量。1.2HTTP流HTTP流是1992年网景公司推出的push机制,叫“动态文档”[4]。有两种形式:页面流和服务流。页面流是指页面上不间断的HTTP连接响应。大部分Web服务器处理发送完响应之后立即退出。但这种情况下,连接通过很长的循环来保持打开状态,服务器脚本利用事件注册或者其他技术来侦测数据状态的改变。当状态改变时,数据
7、进行传输,但传输完并不会直接关闭连接。服务流依赖于XMLHttpRequest对象,在AJAX技术下被称做ReverseAJAX或者Comet[5]。服务流是XMLHttpRequest在后台的长连接,它在连接长度和频率上带来了灵活性。页面会一次性正常加载,数据流的连接可以在预定义的生命周期内。服务器会像页面流中一样不停的循环,浏览器读取最新响应以更新内容。1.3Comet和BAYEUX协议Comet允许服务端发送消息到客户端而无需客户端显示的请求。由于AJAX应用缺少通信标准,在Cometdgroup[8]草拟了一个叫
8、BAYEUX的Comet协议。BAYEUX的消息格式是基于JavaScript语言子集的数据交互格式的,该协议已经被许多Web服务端实现。但Comet的绊脚石在于各浏览器对XHR、iFrames两种实现Comet所需数据块的支持程度不尽相同,没有统一的实现标准。另外,无论是从网络还是开发角度来看,Comet管理两个连
此文档下载收益归作者所有