专利名称:一种Web实时数据主动推送方法
技术领域:
本发明涉及一种Web实时数据推送方法,尤其涉及一种用在电力计量业务生产调度平台中的Web实时数据主动推送方法。
背景技术:
目前,在电力计量业务生产调度平台中,需要在客户端浏览器中监测设备的工作状态及相关数据,且由于工作的重要性,这些数据要求实时展现。在这种情况下,采用传统的浏览器定时请求的模式就不符合要求了。一个典型的服务器与客户端浏览器之间的交互如下所示
(1)、客户端浏览器提出一个请求;
(2)、服务器收到客户端浏览器的请求,进行分析处理;
(3)、服务器将运行处理的结果返回给客户端浏览器。通常一个服务器需要向多个客户端提供服务,因此对服务器来说,还需要考虑如何有效地处理多个客户端的请求。B / S系统(浏览器和服务器结构)一般采用HTTP协议,服务器端的数据发生更新时不会主动发送到客户端的浏览器,需要客户端主动地去请求才能获得新数据。通常的解决方案是客户端浏览器定时向服务器发送请求来进行更新,但是这种方式可能会造成一定的时间误差。在电力计量业务生产调度平台中,设备将其状态信息实时发送到服务器上,服务器收到客户端浏览器的定时请求后将获得的设备状态信息发送到浏览器上,由于电力计量业务生产调度平台中的实时性要求较高,因此这种方法不合适。另外,服务器没有数据更新时客户端浏览器仍然会发出获取数据的请求,这样就加重了服务器和网络传输的负担。
发明内容
本发明的目的是提供一种用在电力计量业务生产调度平台中使用的Web实时数据主动推送方法,服务器的数据更新可主动推送到浏览器,能够加强客户端浏览器数据的实时性。本发明采用下述技术方案一种Web实时数据主动推送方法,包括以下步骤
(1)、客户端浏览器向服务器请求监控页面浏览器通过HTTP协议向服务器调用监控页面,服务器将监控页面返回给浏览器;
(2)、客户端浏览器接收服务器返回的监控页面后进行加载监控页面,同时加载Flex 控件;
(3),Flex控件绑定客户端PC的Socket通讯端口,等待服务器的连接;
(4)、Flex控件主动通过Socket连接服务器,告知自身已就绪,可以接收服务器的推送数据;
(5)、服务器收到Flex控件发送的告知信息后,将告知信息放到服务器的通知列表里;
(6)、若服务器数据发生更新时,服务器将新数据主动发送到通知列表的每个Flex控件上,则Flex控件将信息反馈到客户端浏览器上;若服务器数据没有发生更新,则继续等待服务器数据发生更新。所述步骤(4)的Flex控件告知自身已就绪的内容包括Flex控件的编号、当前所在PC的IP地址、等待的端口。所述的步骤(4)定期执行一次。所述步骤(6)中服务器将新数据主动发送到通知列表的每个Flex控件上的具体步骤如下(a)、服务器根据Flex控件的告知信息,找到Flex控件的IP地址与等待的端口 ; (b)、服务器主动发起Socket连接,若连接成功后将新数据发送到对应的Flex控件上,然后断开连接,然后继续等待服务器数据发生更新;若连接不成功,则尝试进行多次连接,如果仍然连接不成功,则将此Flex控件从通知列表中删除,然后继续等待服务器数据发生更新。本发明所述的用于电力计量业务生产调度平台的Web实时数据主动推送方法,是通过在客户端浏览器中加载Flex控件来实现。当服务器数据发生更新时可实时将最新数据通过Socket推送到客户端浏览器的Flex控件,加强了客户端浏览器数据的实时性,减少了服务器和网络的压力;采用Flex控件可支持多种浏览器;利用Flex控件定时告知和服务器检测连接两种技术保证数据不会漏报和多报,非常适合用于电力计量业务生产调度平台的数据实时传送。
图1为本发明的原理图; 图2为本发明的工作流程图。
具体实施例方式如图1所示,本发明涉及到3个相互协同的部分设备、服务器和客户端浏览器,采用在客户端浏览器上加载Flex控件从而在B/S系统中使得浏览器与服务器建立Socket连接,这样就可以利用Flex控件作为中间层来连接客户端浏览器上的Web页面和服务器端来进行Socket通信,客户端浏览器上的Flex控件与服务器可以相互发送数据,互相控制和调用,从而实现服务器主动推送更新数据的目的。因此当设备将其状态信息实时发送到服务器上,服务器就将获得的状态信息主动发送到客户端浏览器上。除此之外,客户端浏览器也可以通过Flex控件主动向服务器请求信息。如图2所示,本发明的工作流程具体步骤如下所述
(1)、客户端浏览器向服务器请求监控页面浏览器通过HTTP协议向服务器调用监控页面,服务器将监控页面返回给浏览器;
(2)、客户端浏览器接收服务器返回的监控页面后进行加载监控页面,同时加载Flex 控件;Flex控件是Macromedia公司提出的一种富客户端技术,可由浏览器中的Flash插件进行加载和运行;目前,大约99. 8%的浏览器均可运行Flash,即可以运行Flex控件;在本发明中,当浏览器接收到服务器返回的监控页面时,加载此监控页面,此监控页面中包括 Flex控件,浏览器在加载监控页面时同时也加载Flex控件;
(3)、Flex控件绑定客户端PC的Socket通讯端口,等待服务器的连接;Flex控件调用其关联的Applet组件,通过此组件绑定客户端PC的Socket端口 ;
(4)、Flex控件主动通过Socket连接服务器,告知自身已就绪,可以接收服务器的推送数据;所述告知自身已就绪的内容包括Flex控件的编号、当前所在PC的IP地址、等待的端口 ;此步骤定期执行一次,即相当于告知服务器本Flex控件仍然在线;
(5)、服务器收到Flex控件发送的告知信息后,将告知信息放到服务器的通知列表里; 通知列表里维护了多个Flex控件信息,当服务器有数据更新时,将会一一通知这些Flex控件;
(6)、若服务器数据发生更新时,服务器将新数据主动发送到通知列表的每个Flex控件上(a)、首先服务器根据Flex控件的告知信息,找到Flex控件的IP地址与等待的端口 ; (b)、服务器主动发起Socket连接,若连接成功后将新数据发送到对应的Flex控件上,然后断开连接,然后继续等待服务器数据发生更新;若连接不成功,则尝试进行多次连接,如果仍然连接不成功,则将此Flex控件从通知列表中删除,然后继续等待服务器数据发生更新;
若服务器数据没有发生更新,则继续等待服务器数据发生更新。
权利要求
1.一种Web实时数据主动推送方法,其特征在于包括以下步骤(1)、客户端浏览器向服务器请求监控页面浏览器通过HTTP协议向服务器调用监控页面,服务器将监控页面返回给浏览器;(2)、客户端浏览器接收服务器返回的监控页面后进行加载监控页面,同时加载Flex 控件;(3),Flex控件绑定客户端PC的Socket通讯端口,等待服务器的连接;(4)、Flex控件主动通过Socket连接服务器,告知自身已就绪,可以接收服务器的推送数据;(5)、服务器收到Flex控件发送的告知信息后,将告知信息放到服务器的通知列表里;(6)、若服务器数据发生更新时,服务器将新数据主动发送到通知列表的每个Flex控件上,则Flex控件将信息反馈到客户端浏览器上;若服务器数据没有发生更新,则继续等待服务器数据发生更新。
2.根据权利要求1所述的Web实时数据主动推送方法,其特征在于所述步骤(4)的 Flex控件告知自身已就绪的内容包括Flex控件的编号、当前所在PC的IP地址、等待的端
3.根据权利要求2所述的Web实时数据主动推送方法,其特征在于所述的步骤(4)定期执行一次。
4.根据权利要求1或2或3所述的Web实时数据主动推送方法,其特征在于所述步骤(6)中服务器将新数据主动发送到通知列表的每个Flex控件上的具体步骤如下(a)、 服务器根据Flex控件的告知信息,找到Flex控件的IP地址与等待的端口 ;(b)、服务器主动发起Socket连接,若连接成功后将新数据发送到对应的Flex控件上,然后断开连接,然后继续等待服务器数据发生更新;若连接不成功,则尝试进行多次连接,如果仍然连接不成功,则将此Flex控件从通知列表中删除,然后继续等待服务器数据发生更新。
全文摘要
本发明公开了一种Web实时数据主动推送方法,采用在客户端浏览器上加载Flex控件从而在B/S系统中使得浏览器与服务器建立Socket连接,这样就可以利用Flex控件作为中间层来连接客户端浏览器上的Web页面和服务器端进行Socket通信,客户端浏览器上的Flex控件与服务器可以相互发送数据,互相控制和调用,从而实现服务器主动推送更新数据的目的。当服务器数据发生更新时可实时将最新数据通过Socket推送到客户端浏览器Flex控件,加强了客户端浏览器数据的实时性,减少了服务器和网络的压力。
文档编号H04L29/06GK102333128SQ20111033628
公开日2012年1月25日 申请日期2011年10月31日 优先权日2011年10月31日
发明者丁涛, 兰涛, 孟凯, 康吉全, 徐二强, 曹益陆, 李去病, 李铮, 杨建龙, 杨进, 武宏波, 王雍, 郝中杰 申请人:河南省电力公司计量中心, 河南腾龙信息工程有限公司