Web的消息推送技术中的消息推送和消息服务
2016-09-08姜淑芳雍宁葛华森
姜淑芳 雍宁 葛华森
【摘要】 “服务器推送技术”是最近Web技术中最热门的一个流行术语。它也是继“Ajax”之后又一个倍受追捧的Web技术。该技术最近的流行跟“Ajax ”也有着密切的关系。随着 Ajax技术的兴起,这让广大的web开发人员又一次看到了使用浏览器来替代桌面应用的大好机会,并且这次机会非常大。Ajax将整个页面的刷新变成页面局部的刷新,并且数据的传送是以异步方式进行。
【关键词】 Web 消息推送 消息推送技术 服务器 消息服务 Ajax
一、引言
很多应用譬如信息检测监控、即时通信功能、即时报价信息系统都需要将后台发生的变化实时传送到前段客户端而无须客户端不停地刷新、发送请求。本文主要介绍了Web层的消息推送和服务层的消息服务业务,消息推送介绍了套接字、HTTP请求轮询及其各种原理、Html5还有多客户端兼容性支持,服务层的消息推送业务里介绍了消息域和消息确认模块。
二、Web 层的消息推送
2.1 套接字
套接字可以使用接口来进行全双工的通讯。也就是可以通过 Flash XMLSocket、Java Applet 技术实现。但是由于有的时候实现方案与商业中技术绑定过紧,此不能属于Web 标准化范围,而且还存在一些定的限制,这里不细述。
2.2 HTTP 请求-轮询
当前的 Web 应用业务都是基于 HTTP 协议实现的,HTTP协议就规定了那种通过请求来反应的处理模式,而在应用层的单工通讯模式对于实现真正的服务器推送方式又变得难了。为了基于 HTTP 协议进行“推送”实现,可由客户端发起 HTTP 请求轮询,服务端在请求后返回响应。根据轮询的执行时间、请求的处理方式,分为以下轮询方式:
简单轮询方式原理:客户端一般会以定时的方式发起请求,服务端接到请求后返回响应消息。
轮询原理、客户端/服务端的简单实现;
可以根据应用的场景调整轮询时间的间隔;
服务端需要即时处理大量的请求。
长轮询方式原理:客户端在发起请求了之后服务端将该请求挂起(也就是暂时不响应),直到超时、异常或需要处理响应(推送消息内容)时才返回响应。然后,客户端在收到响应后再次轮询(也就是请求)到服务端,同时开始处理其响应。
此原理的实时性较高;
服务端需要在必要时管理挂起请求。
HTTP 流方式原理:客户端发起请求后在服务器端处理请求,并且通过 HTTP 流的方式一直向客户端写入数据消息,直到超时或异常才返回给服务器响应。在连接断开后客户端会再次和多次请求到服务端,这也就属于长轮询方式的一种。
2.3 HTML 5 - WebSocket
这是标准化的客户端使用全双工通讯的规范,但由于目前的服务器端规范还没有形成一个真正的规范型,且大部分浏览器对新的 HTML5的兼容性还是有限的,这里不再叙述。
2.4 多客户端支持
上述介绍是针对浏览器端的,而在实际应用场景中,还需要考虑其他客户端兼容性,例如 IOS、Android,甚至Linux等系统。在移动客户端也就是软件方面,需要考虑如下几点:APIs 的多样性:不同的客户端在本地 APIs 接口逗存在不同样子的差异,但基本都支持最基本的 HTTP 协议,因为这是一个基础,而且直接用基于 HTTP 协议进行开发的可以将差异变小。网络连接不稳定性:通信道打开后不一定能长时间维护,客户端、服务端的状态管理比较复杂。最小化的流量:需要尽量的最小化网络流量需求,提升移动客户端的持续可用性。
三、服务层的消息服务
消息是指系统或组件间通讯的一种低耦合的模式,是系统级的异步架构的基础元素。在 Web 消息推送中,服务端管理应用状态,当其状态发生了变化时需发送到客户端,完成消息的推送。Java Message Service中需要重点关注如下技术点:消息域模块:点对点——有且只有一个客户端可以通过消息域接收到消息。发布/订阅——通过发布给已经订阅的客户端。可配置成持久化的订阅。消息确认模块:会话在本地事务在提交的时候会对接收数据来进一步的确定,回滚的时候将重传所有的消息,达到消息确认的目的。非本地事务确认方法是:Session.AUTO_ACKNOWLEDGE、Session.CLIENT_ACKNOWLEDGE、Session.DUPS_OK_ ACKNOWLEDGE
总结 :本文介绍了如何在现有的web消息推送技术基础上选择合适的方案开发一个“服务器推”的应用,最优的方案还是取决于应用需求的本身。相对于传统的 Web 应用, 目前热门开发 Comet 应用还是有一定的挑战性的。需求推动技术的发展,相信 Comet 的应用会变得和 AJAX 一样普及。
参 考 文 献
[1] 陈航,赵方. 基于服务器推送技术和XMPP的WebIM系统实现[J]. 计算机工程与设计. 2010(05)
[2] C.J.Date著,数据库系统导论(第七版). 机械工业出版社
[3] Stephens著,数据库设计. 机械工业出版社
[4] 周婷,Comet:基于 HTTP 长连接的“服务器推”技术. http://www.ibm.com/developerworks/cn/web/wa-lo-comet/