一种服务器主动推送数据的方法和系统技术方案

技术编号:5473192 阅读:194 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种服务器主动推送数据的方法和系统,其中,所述方法具体包括:浏览器发起注册请求,以连接服务器并接受所述服务器主动推送的数据,在所述浏览器注册成功后,所述浏览器与服务器之间建立用于传输主动推送的数据的数据通道;所述浏览器发起订阅请求,所述订阅请求包含订阅数据的类型参数以及表示订阅内容的标识;所述服务器根据所述订阅请求,通过所述数据通道,向所述浏览器主动推送相应数据。通过本发明专利技术,可以满足对浏览器实时推送数据的要求,并且能够提高应用系统的并发度,减少服务器的性能消耗。

【技术实现步骤摘要】

本专利技术涉及信息系统开发
,更具体地说,涉及一种服务器主动推送数据 的方法和系统。
技术介绍
随着Web技术的流行,越来越多的应用从原有的C/S (Cl ient/Server,客户机/服 务器区)模式转变为B/S (Browser/Server,浏览器/服务器)模式,享受着Web技术所带来 的各种优势,例如跨平台、免客户端维护、跨越防火墙、扩展性好等。在这种模式下,用户工 作界面是通过万维网浏览器来实现,极少部分事务逻辑在前端浏览器实现,但是主要事务 逻辑在服务器端实现。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本 和工作量,降低了用户的总体成本。但是基于浏览器的应用,也有它不足的地方,传统模式的Web系统(包括ajax技 术)都是以客户端发出请求、服务器端响应的方式工作,不具备由服务器端主动向浏览器 推送信息的能力,这无法满足对实时性要求很高的系统的需求,诸如监控系统、即时通讯系 统、报价系统。由于浏览器中的页面每次需要全部刷新才能从服务器端获得最新的数据或 向服务器传送数据,这样产生的延迟所带来的视觉感受非常糟糕。目前,现有技术已经具备一些“服务器推”模式的解决方案(1)基于 flash 套接口(Flash XMLSocket)的实现方案须依赖Flash播放器才能正常运行,该方式在flash程序中实现了与C/S的套接 口(socket) —致的能力,利用Flash提供的XMLSocket套接口,在javascript中直接调用, 实现“服务器推”模式的开发和应用。(2)基于 Java Applet 套接口(java. net. Socket)的实现方案须在浏览器安装jvm,如果客户端安装了 Java Applet,后台服务可以直接在java 代码中通过java. net. Socket完成“服务器推”的动作。上述两种实现方案中,Flash播放器以及Applet这样的浏览器插件技术本身又有 许多问题,例如跨平台问题和插件版本兼容性问题。第三种“服务器推”模式的解决方案是基于http请求的Comet技术。Comet是一 套B/S下的,基于纯http请求的,专门用来解决“服务器推”的技术模型。目前业界已经有 一些比较成熟的Comet框架1. Pushlet该框架是Comet模型的一套实现,主要技术要点描述如下通过前台的javascript和后台的java代码实现一套订阅请求机制,这也是实 时推送的前提条件。这包括订阅主题、订阅回话管理、订阅时长等等。在浏览器端提供 javascript的api,以主题为订阅标识,通过ajax向后台发送http请求。后台接到订阅信 息后将订阅控制内容返回给浏览器端。浏览器端根据后台派发的控制信息,定时向后台发 送取数请求,后台响应该请求即完成推送动作。这实际上是前台自动轮询的一种变相实现,只是轮询需要的时间间隔、主题等,由后台来维护。2. BoshBosh是一种基于http长连接请求的Comet框架。同样实现了一套订阅请求机制。 浏览器与服务端的长连接请求过程可描述如下浏览器发送第一个订阅请求,服务器端将该请求保持。当第一个订阅有数据需要 实时推送时,将数据载入到第一个请求的响应中,并释放;浏览器发送第二个订阅请求,如果第一个请求仍然被保持在服务器端且没有数据 需推送,则返回空包,然后保持第二个请求。如果浏览器有新的订阅请求,再重复使用第一 个请求,如此重复。然而,对于Pushlet模式来说,虽然轮询的规则是由服务端控制的,但原理上依然 采取的是前台轮询机制,为了提高推送实时程度,势必须加大轮询频率(如每2秒轮询一次 或更少),这会显著增加对服务器的压力;另外,轮询机制不论是否有数据推送,都需不断 地“请求返回”浪费了较多的网络带宽。实时性和服务器性能的矛盾是pushlet的主要缺 陷。而Bosh模式相对pushlet来讲,虽有效减轻了服务器负担,节省了网络带宽,但空 包返回率在推送频率低的环境中仍会很高,而且订阅控制信息与推送数据在同一个请求中 返回,且两者通常属于不同的主题,这在逻辑上比较凌乱。
技术实现思路
有鉴于此,本专利技术实施例提供一种服务器主动推送数据的方法和系统,满足对浏 览器实时推送数据的要求,能够提高应用系统的并发度,减少服务器的性能消耗。本专利技术实施例提供一种服务器主动推送数据的方法,所述方法包括浏览器发起注册请求,以连接服务器并接受所述服务器主动推送的数据,在所述 浏览器注册成功后,所述浏览器与服务器之间建立用于传输主动推送的数据的数据通道;所述浏览器发起订阅请求,所述订阅请求包含订阅数据的类型参数以及表示订阅 内容的标识;所述服务器根据所述订阅请求,通过所述数据通道,向所述浏览器主动推送相应 数据。优选的,当所述数据通道建立之后,所述方法还包括所述浏览器向服务器发送周期性心跳信息,以表示所述浏览器与服务器之间的持 续连接。优选的,当需要将多条数据同时推送至所述浏览器时,所述方法还包括将所述多条数据进行串行化处理,通过所述数据通道,将经过串行化处理后的数 据按顺序依次推送至所述浏览器。优选的,所述服务器根据所述订阅请求,通过所述数据通道,向所述浏览器主动推 送相应数据,具体包括所述服务器根据所述订阅请求,将相应数据转化为xml或Json或文本模式,通过 所述数据通道向所述浏览器主动推送。优选的,所述方法还包括当所述浏览器请求断开与服务器的连接时,所述数据通道被取消。一种服务器主动推送数据的系统,所述系统包括浏览器和服务器;其中,所述浏览器,用于发起注册请求,以连接服务器并接受所述服务器主动推送的数 据,并在所述浏览器与服务器之间建立用于传输主动推送的数据的数据通道之后,发起订 阅请求,所述订阅请求包含订阅数据的类型参数以及表示订阅内容的标识;所述服务器,用于在所述浏览器注册成功后,在所述浏览器与服务器之间建立所 述数据通道,并根据所述订阅请求,通过所述数据通道,向所述浏览器主动推送相应数据。优选的,当所述数据通道建立之后,所述浏览器还用于向服务器发送周期性心跳 信息,以表示所述浏览器与服务器之间的持续连接。优选的,当需要将多条数据同时推送至所述浏览器时,所述服务器还用于将所述多条数据进行串行化处理,通过所述数据通道,将经过串行化处理后的数 据按顺序依次推送至所述浏览器。优选的,所述服务器还用于根据所述订阅请求,将相应数据转化为xml或Json或 文本模式,通过所述数据通道向所述浏览器主动推送。优选的,当所述浏览器请求断开与服务器的连接时,所述服务器还用于取消所述 数据通道。 同现有技术相比,本专利技术实施例提供了 一种基于请求模式且不依赖其他第三方框 架或插件的服务器与浏览器的主动推模式的应用框架,当浏览器建立与服务器的连接之 后,服务器建立处于浏览器与服务器之间建立用于传输主动推送的数据的数据通道,服务 器能够通过该数据通道,根据浏览器的订阅请求,向浏览器主动推送相应数据,可见,服务 器能够根据浏览器的订阅请求进行数据的主动推送,因此,不需浏览器采用前台轮询的方 式判断是否有主动推送的数据,可最大程度减少服务器连接的占用,从而提高应用系统的 并发度,减少服务器的性能消耗。附图说明为了更清楚地说明本专利技术实施例的技术方案,下面将本文档来自技高网
...

【技术保护点】
一种服务器主动推送数据的方法,其特征在于,所述方法包括:  浏览器发起注册请求,以连接服务器并接受所述服务器主动推送的数据,在所述浏览器注册成功后,所述浏览器与服务器之间建立用于传输主动推送的数据的数据通道;  所述浏览器发起订阅请求,所述订阅请求包含订阅数据的类型参数以及表示订阅内容的标识;  所述服务器根据所述订阅请求,通过所述数据通道,向所述浏览器主动推送相应数据。

【技术特征摘要】

【专利技术属性】
技术研发人员:丁医冉丁吴可嘉
申请(专利权)人:中国农业银行股份有限公司
类型:发明
国别省市:11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1