一种消息反向推送、网管***报警及状态更新的方法
技术领域
本发明涉及监控领域,尤其是一种消息反向推送、网管***报警及状态更新的方法。
背景技术
传统的web应用工作模式是浏览器客户端发送请求(request),服务器端根据请求进行相关业务处理然后返回响应(response),在这种模式中存在一个重大的缺陷,那就是客户端要获取最新的数据就必须向服务器发送一次更新页面请求,服务器才会将相关数据返回,但这些数据可能是历史数据,也有可能是最新接收到的数据。为了获取到实时数据,用户只能通过轮询的方式频繁的向服务器发送页面请求,基于这种方式,客户端和服务器对于频繁的发送请求和返回响应都有一定的性能消耗,且获取数据的过程是有一定的时间延迟,对于高频率更新页面的应用来说这是无法接受的,在这种情况下,为了能让用户通过web获取实时数据,提高用户体验,相关的服务端向浏览器推送的技术便适应时代的需要而产生了。
发明内容
本发明所要解决的技术问题是:针对现有技术存在的问题,提供一种消息反向推送、网管***报警及状态更新的方法。本发明基于浏览器中的FLEX插件,与服务端建立SOCKET连接,实现了服务器向浏览器推送消息的功能,采用这种结构的实现方式有效解决了服务器推送消息的及时性、稳定性,提升了***并发处理推送消息的性能。在网管服务器应用中采用该技术,服务端采用MINA框架,实现了对数据实时性要求较高的应用功能,如实时告警监控,设备状态信息的实时变更,任务执行过程的实时查看等,满足了网管维护人员对相关信息及时性的要求,提升了网络维护质量。
本发明采用的技术方案如下:
一种消息反向推送的方法包括:
步骤1:浏览器客户端与服务器首次建立连接时,封装在浏览器客户端中的flex插件,会先向服务端发送一个用于请求安全策略文件的字符串,服务端接收到这个字符串后,给浏览器中的flex插件返回安全策略文件;
步骤2:浏览器客户端的flex插件根据服务器返回的安全策略文件中描述的访问权限,再次向服务器发送Socket连接请求,服务端收到客户端的连接请求后,与客户端建立socket连接;
步骤3:当服务器接收到更新消息后,将更新消息推送给浏览器客户端,服务端与浏览器客户端中flex插件之间通过socket连接收发消息;浏览器客户端通过消息解析模块进行消息解析;
步骤4:消息解析模块将解析后的数据通过回调模块,进行事件函数的回调操作,完成页面效果的渲染。
进一步的,所述步骤3中浏览器客户端通过消息解析模块进行消息解析具体包括:
步骤31:消息格式为Socket传输消息数据头+数据长度值+业务消息头+业务消息数据体;其中Socket传输消息数据头包括Socket传输消息的协议编号以及Socket传输消息数据体的总体长度;业务消息头包括请求标识SessionId长度、业务标识BusinessId长度以及业务数据BusinessData长度;所述业务消息数据体包括请求标识HttpSessionId、业务标识BusinessId以及业务数据BusinessData;
步骤32:消息解析模块截取Socket传输消息数据头,从Socket传输消息数据头中获取Socket传输消息数据体的总体长度,根据该总体长度值,截取出业务消息数据体;
步骤33:业务消息头长度是固定长度:12个字节,消息解析模块根据固定的业务消息头长度,获取业务消息头,从业务消息头中分别解析出HttpSessionId长度、BusinessId长度以及BusinessData长度;
步骤34:根据HttpSessionId长度、BusinessId长度以及BusinessData长度分别从业务消息数据体中,截取出请求标识HttpSessionId、业务标识BusinessId以及业务数据BusinessData,并将其传递至回调模块。
进一步的,所述步骤4具体包括:消息解析模块将解析完成的请求标识HttpSessionId、业务标识BusinessId、业务数据BusinessData传递给回调模块,回调模块根据推送消息的业务标识BusinessId,找到注册该业务标识对应的JavaScript事件函数,再将业务数据BusinessData传递给JavaScript事件函数,进行事件函数的回调操作,完成页面效果的渲染。
一种网管***告警控制方法包括:
步骤111:用户通过浏览器客户端访问网管服务器,浏览器客户端中flex插件向网管服务器请求安全策略文件;网管服务器收到请求安全策略文件的命令后,给浏览器中的flex插件返回安全策略文件;
步骤112:浏览器客户端中的flex插件根据安全策略文件中的访问权限,再次请求服务端建立socket连接;网管服务器收到连接请求后,与浏览器中的flex插件建立socket连接,并记录连接请求标识与socket连接标识的映射关系。
步骤113:网管服务器接收到所管理的网络设备的告警信息,网管服务器的告警模块对告警信息进行汇总处理,获得某一时段各告警级别对应的告警数量,网管服务器的告警模块调用MINAsocket服务模块;
步骤114:MINAsocket服务模块接收到告警模块的告警消息推送命令后,将各告警级别以及对应的告警数量作为业务数据封装成告警消息格式,并根据不同的推送方式,完成告警消息的推送操作:如果推送方式是是广播方式,则MINAsocket服务模块获取所有浏览器客户端的socket连接标识,逐一完成推送;如果推送方式是点对点方式,则MINAsocket服务模块根据推送的连接请求标识、连接请求标识与socket连接标识的映射关系,找到socket连接标识,将告警数量消息推送给相应建立socket连接标识的浏览器客户端,完成告警消息推送;
步骤115:客户端浏览器中消息解析模块接收到网关服务器的MINAsocket服务模块推送的告警消息后,通过消息解析模块对告警消息进行解析,获得业务标识及业务数据;
步骤116:然后客户端浏览器中回调模块根据业务标识,得到需要回调的JavaScript函数,将业务数据作为参数,传递给该JavaScript函数,完成函数调用操作。
进一步的,所述步骤115具体步骤包括:
步骤1151:浏览器客户端的解析模块接收到服务端封装的告警消息,
步骤:1152:告警消息格式为Socket传输消息数据头+数据长度值+业务消息头+业务消息数据体;其中Socket传输消息数据头包括Socket传输消息的协议编号以及Socket传输消息数据体的总体长度;业务消息头包括请求标识SessionId长度、业务标识BusinessId长度以及业务数据BusinessData长度;所述业务消息数据体包括请求标识HttpSessionId、业务标识BusinessId以及业务数据BusinessData;
步骤1153:解析模块截取Socket传输消息数据头,Socket传输消息数据头中获取Socket传输消息数据体的总体长度,根据该总体长度值,截取出业务消息数据体;
步骤1154:业务消息头长度是固定长度:12个字节,解析模块根据固定的业务消息头长度,获取业务消息头,从业务消息头中分别解析出HttpSessionId长度、BusinessId长度以及BusinessData长度;
步骤1155:解析模块根据HttpSessionId长度、BusinessId长度以及BusinessData长度分别从业务消息数据体中,截取出请求标识HttpSessionId、业务标识BusinessId以及业务数据BusinessData,并将其传递至回调模块,其中业务数据指的得是各告警级别以及对应的告警数量。
进一步的,所述步骤116具体步骤包括:端浏览器中回调模块对获得的业务标识进行逻辑判断,业务标识BusinessId的取值有两种:一是刷新告警列表,二是语音播报新增告警,如果该业务标识为刷新告警,则调用刷新告警页面的JavaScript函数,完成页面的实时刷新,如果是语音播报新增告警,则调用语音播报的JavaScript函数,将解析出各告警级别以及对应的告警数量做为参数,传递给语音播报的JavaScript函数,进行该函数回调,完成新增告警语音播报的操作。
一种网管***设备在线状态更新的方法包括:
步骤1111:用户通过浏览器客户端访问网管服务器,浏览器客户端中flex插件向网管服务器请求安全策略文件;网管服务器收到请求安全策略文件的命令后,给浏览器中的flex插件返回安全策略文件;
步骤:1112:浏览器客户端中的flex插件根据安全策略文件中的访问权限,再次请求服务端建立socket连接;网管服务器收到连接请求后,与浏览器中的flex插件建立socket连接,并记录连接请求标识与socket连接标识的映射关系;
步骤1113:网管服务器实时探测网络设备是否在线,当探测完成后,网管服务器的设备管理模块得到某个时间点各网络设备的在线状态,然后与上一时刻保存的网络设备在线状态进行比较,获得在线状态发生变化的网络设备编号;最后网管服务器的设备管理模块调用MINAsocket服务模块,
步骤1114:MINAsocket服务接收到设备管理模块的设备状态更新推送命令后,将设备管理模块将在线状态发生变化的网络设备编号消息作为业务数据封装成统一的设备状态更新消息格式,并根据不同的推送方式,完成设备状态更新消息的推送操作;如果推送方式是广播方式,则MINAsocket服务模块获取所有浏览器客户端的socket连接标识,逐一完成推送;如果推送方式是点对点方式,则MINAsocket服务模块根据推送的连接请求标识、连接请求标识与socket连接标识的映射关系,找到socket连接标识,将设备状态更新消息推送给相应建立socket连接标识的浏览器客户端,完成设备状态更新消息推送;
步骤1115:客户端浏览器中数据解析模块接收到网管服务器推送的消息后,对消息进行解析,获得业务标识以及发生在线状态变更的网络设备;
步骤1116:然后客户端浏览器中回调模块根据消息类型,得到需要回调的JavaScript函数,然后将消息中的发生在线状态变更的设备,作为参数,传递给该JavaScript函数,完成函数调用操作。
进一步的,所述步骤1115具体步骤包括:
步骤11151:浏览器客户端的解析模块接收到网关服务端封装的设备状态更新消息;设备状态更新格式为Socket传输消息数据头+数据长度值+业务消息头+业务消息数据体;其中Socket传输消息数据头包括Socket传输消息的协议编号以及Socket传输消息数据体的总体长度;业务消息头包括请求标识SessionId长度、业务标识BusinessId长度以及业务数据BusinessData长度;所述业务消息数据体包括请求标识HttpSessionId、业务标识BusinessId以及业务数据BusinessData;
步骤11152:解析模块截取Socket传输消息数据头,Socket传输消息数据头中获取Socket传输消息数据体的总体长度,根据该总体长度值,截取出业务消息数据体;
步骤11153:业务消息头长度是固定长度:12个字节,消息解析模块根据固定的业务消息头长度,获取业务消息头,从业务消息头中分别解析出HttpSessionId长度、BusinessId长度以及BusinessData长度;
步骤11154:消息解析模块根据HttpSessionId长度、BusinessId长度以及BusinessData长度分别从业务消息数据体中,截取出请求标识HttpSessionId、业务标识BusinessId以及业务数据BusinessData,并将其传递至回调模块,其中业务数据指的得是在线状态变化的网络设备编号。
进一步的,所述步骤1116具体步骤包括:浏览器客户端回调模块对获得业务标识BusinessId进行逻辑判断,业务标识BusinessId的取值有两种:一是更新资产树,二是更新拓扑图;如果业务标识为更新资产树时,则将解析出具体的发生在线状态变更的网络设备编号做为参数,传递给语音播报的JavaScript函数,进行函数回调;如果业务标识为更新拓扑图,则将解析出的具体的发生在线状态变更的网络设备编号做为参数,传递给更新拓扑图的JavaScript函数,进行函数回调,完成资产树上设备在线状态的变更。
综上所述,由于采用了上述技术方案,本发明的有益效果是:
1)能和服务端实时通信,服务端消息推送到浏览器后,通过Flex插件回调JavaScript事件函数的方式改变页面显示效果,实时性得到了保证,及时性好。
2)本发明基于浏览器中的FLEX插件,与服务端建立SOCKET长连接,服务端采用MINA框架,实现了服务器向浏览器推送消息的功能,采用这种结构的实现方式有效解决了服务器推送消息的及时性、稳定性,提升了***并发处理推送消息的性能。
3)在网管应用中采用该技术,实现了对数据实时性要求较高的应用功能,如实时告警监控,设备状态信息的实时变更,任务执行过程的实时查看等,满足了网管维护人员对相关信息及时性的要求,提升了网络维护质量。
具体实施方式
本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。
本说明书(包括任何附加权利要求、摘要)中公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。
本发明相关说明:
1、策略文件的作用是设置浏览器中的flex插件访问服务器的域名权限(或者ip),访问服务器的端口权限。
2、本消息推送技术一是FLEX提供了Socket连接服务,浏览器客户端与服务器建立连接后,服务器利用Socket向浏览器发送数据;二是JavaScript与FLEX的紧密结合,JavaScript与FLEX可以相互调用。
3、消息格式解释如下:
Tag:表示Socket传输消息的协议编号(此处值固定),占4个字节;
数据长度:Socket传输消息数据体的总体长度,占4个字节,值大于等于12;
HttpSessionId长度:记录HttpSessionId的二进制码长度,占4个字节;
BusinessId长度:记录BusinessId的二进制码长度,占4个字节;
BusinessData长度:记录BusinessData的二进制码长度,占4个字节;
HttpSessionId:用户浏览器登录对应的HttpSeeeion编号,二进制码值;
BusinessId:应用中发送消息时具体功能业务编号,二进制码值;
BusinessData:应用中发送消息时具体功能业务数据,二进制码值。
工作原理:在浏览器客户端第一次发送请求与服务器建立连接后,服务器在返回数据的同时就把当前的连接一直保持打开状态,当服务器以后每次接收到新的数据时就立即通过这个连接返回给客户端,客户端解释响应数据并展示在用户界面上。具体包括浏览器中的Flex插件实现了SOCKET连接服务,这使得运行flashPlayer的计算机可以与服务器进行通信,然后完成服务器的消息推送功能。采用的方法是网页中嵌入一个FLEX程序,客户端脚本(JavaScript)将改变页面的事件注册到FLEX插件中,FLEX在接收到服务器推送的消息后,调用注册的JAVASCRIPT事件,控制HTML的Dom(文控对象模型)来改变页面的内容显示,而达到服务器主动推送到客户端的效果,***结构见所示。三是服务端采用了MINA框架,提升了大数据量的并发处理能力及***稳定性。
具体实施例:
1、浏览器客户端与服务端建立socket连接,建立连接的过程包括以下步骤:首先封装在浏览器中的flex插件,会先向服务端的843端口(该端口可配置)发送一个字符串“<policy-file-request/>”,请求安全策略文件,服务端接收到这个字符串后,直接按照XML格式返回安全策略文件;
客户端根据服务端返回的安全策略文件中描述的访问权限,再次向服务端发送连接请求,该连接请求包括请求标识、服务端IP、端口号,服务端收到客户端的连接请求后,服务器端保存客户端的连接请求标识,与客户端建立socket长连接,至此完成与浏览器服务器连接建立,连接建立过程所示。
2、消息的接收:完成对服务端推送消息的接收,接收到推送消息后,将消息移交至消息解析模块进行处理。消息的解析:服务端与浏览器客户端中flex插件之间通过socket连接收发的消息种类很多,为方便对消息的统一处理,定义了一套标准的消息格式,所有的收发消息必须是该格式,该模块就是对服务端推送的消息进行指定格式的解析。具体消息格式是按照后续消息格式进行,Socket传输消息数据头+数据长度值+业务消息头(HttpSessionId长度+BusinessId长度+BusinessData长度)+业务消息数据体(HttpSessionId+BusinessId+BusinessData),解析规则如下:首先截取Socket传输消息数据头,从数据头中,获取传输消息数据体的总体长度,根据该长度,截取传输消息数据体,对该数据体进一步进行解析,根据指定长度,获取业务消息头,从业务消息头中分别解析出HttpSessionId长度、BusinessId长度、BusinessData长度,再根据这些长度,分别从业务消息数据体中,截取出HttpSessionId、BusinessId、BusinessData,截取出这些值后,将这些值传递至回调JavaScript函数处理模块,进行JavaScript函数回调处理
4、浏览器客户端回调模块:该模块由两个部分组成,一是负责注册业务功能指定的JavaScript事件函数,注册是在浏览器器加载页面时完成的,注册的内容包括业务标识,回调的JavaScript事件函数;二是负责对注册的JavaScript事件函数进行回调,回调过程如下:flex插件接收到服务端推送的消息后,进行消息解析,将解析完成的HttpSessionId(请求标识)、BusinessId(业务标识)、BusinessData(业务数据)传递给本模块,本模块根据推送消息的BusinessId(业务标识),找到注册该业务标识对应的JavaScript事件函数,再将BusinessData(业务数据)传递给JavaScript事件函数,进行事件函数的回调操作,完成页面效果的渲染;
其中回调模块包括两个功能,一是负责注册业务功能指定的JavaScript事件函数,注册是在浏览器器加载页面时完成的,注册的内容包括业务标识,回调的JavaScript事件函数;二是负责对注册的JavaScript事件函数进行回调,回调过程如下:flex插件接收到服务端推送的消息后,进行消息解析,将解析完成的HttpSessionId(请求标识)、BusinessId(业务标识)、BusinessData(业务数据)传递给本模块,本模块根据推送消息的BusinessId(业务标识),找到注册该业务标识对应的JavaScript事件函数,再将BusinessData(业务数据)传递给JavaScript事件函数,进行事件函数的回调操作,完成页面效果的渲染。
实施例二:
服务器向浏览器消息推送是一种用户体验较好的业务模式,可根据不同的业务要求,对推送消息进行实时、多样的展示,在网管***中,充分利用了该消息推送技术,完成了各类业务功能,较好满足了网络管理人员对网络的维护要求。
实时告警监控
实时告警监控的主要功能是对***内所管理设备产生的告警信息进行实时呈现,方便网络维护人员对网络故障进行定位及处理,当某一设备产生了新告警,或者是区域分组下的设备告警级别发生了变化,***内的不同功能页面都应该能及时反映这种变化,方便网络维护人员进行故障发现处理。是发生告警后的推送流程,服务器采集到告警信息后,进行告警业务过程处理,将总告警数量的变化消息、实时告警列表变化的消息、区域/分组告警级别变更等消息推送给浏览器客户端,客户端收到该消息后,根据用户访问的不同页面进行页面内容的变更处理。具体实现过程:
1)用户通过浏览器访问网管***,登录成功后,浏览器中flex插件会向服务端请求安全策略文件。
2)网管服务器收到请求安全策略文件的命令后,给浏览器中的flex插件返回安全策略文件。
3)浏览器中的flex插件根据安全策略文件中的权限约束,再次请求服务端建立socket连接。
4)网管服务器收到连接请求后,与浏览器中的flex插件建立socket连接,并记录连接请求标识与socket连接标识的映射关系。
5)网管服务器接收到管理设备的告警信息,告警模块对告警进行汇总处理,获得某一时段各告警级别下的告警数量,调用MINAsocket服务模块(通过MINAsocket服务实现),告诉该服务需要将数据推送给哪些浏览器的请求标识。告警模块通过MINAsocket服务模块将告警数量推送给浏览器客户端的方式有两种:第一种是广播方式推送,即通过MINAsocket服务模块,将告警数量消息推送给所有与网管服务器建立socket连接的浏览器客户端;第二种是点对点推送,即将告警数量消息以及socket连接请求标识,通过MINAsocket服务推送给与指定的建立了socket连接的浏览器客户端。如果使用广播方式(第一种)进行消息推送,告警模块只需要将要推送的告警消息传递给MINAsocket服务,如果使用点对点方式(第二种)进行消息推送,告警模块需要将要推送的告警消息,以及需要推送的连接请求标识传递给MINAsocket服务。;
6)MINAsocket服务,接收到告警模块的推送命令后,将推送消息封装成统一的消息格式,并获取推送的请求标识,找到socket连接标识,完成告警消息推送的操作。
7)客户端浏览器中flex插件接收到服务器端推送的消息后,对告警消息进行解析(解析具体过程是:浏览器客户端通过消息解析模块进行消息解析具体包括:步骤31:收发消息格式为Socket传输消息数据头+数据长度值+业务消息头+业务消息数据体;其中Socket传输消息数据头包括Socket传输消息的协议编号以及Socket传输消息数据体的总体长度;业务消息头包括请求标识SessionId长度、业务标识BusinessId长度以及业务数据BusinessData长度;所述业务消息数据体包括请求标识HttpSessionId、业务标识BusinessId以及业务数据BusinessData;步骤32:截取Socket传输消息数据头,Socket传输消息数据头中获取Socket传输消息数据体的总体长度,根据该总体长度值,截取出业务消息数据体;步骤33:业务消息头长度是固定长度:12个字节,根据固定的业务消息头长度,获取业务消息头,从业务消息头中分别解析出HttpSessionId长度、BusinessId长度以及BusinessData长度;步骤34:根据HttpSessionId长度、BusinessId长度以及BusinessData长度分别从业务消息数据体中,截取出请求标识HttpSessionId、业务标识BusinessId以及业务数据BusinessData,并将其传递至回调模块),获得告警消息类型,及具体的告警消息,然后根据消息类型,得到需要回调的JavaScript函数,将具体的告警消息,作为参数,传递给该JavaScript函数,完成函数调用操作。
8)浏览器的页面将JavaScript函数实现的方法,完成页面的渲染,达到告警数据的准确展示及提示操作用户有新增告警的目的。
实施例三:
1)用户通过浏览器访问网管***,登录成功后,浏览器中flex插件会向服务端请求安全策略文件。
2)网管服务器收到请求安全策略文件的命令后,给浏览器中的flex插件返回安全策略文件。
3)浏览器中的flex插件根据安全策略文件中的权限约束,再次请求服务端建立socket连接。
4)网管服务器收到连接请求后,与浏览器中的flex插件建立socket连接,并记录连接请求标识与socket连接标识的映射关系。
5)网管采集服务器会实时探测管理设备是否在线,探测完成后,会得到某个时间点各设备的上下线状态,然后调用MINAsocket服务,告诉该服务需要将数据推送给哪些浏览器的请求标识。
6)MINAsocket服务,接收到该业务模块的推送命令后,将推送消息封装成统一的消息格式,并获取推送的请求标识,找到socket连接标识,完成设备上下线消息推送的操作。
7)客户端浏览器中flex插件接收到服务器端推送的消息后,对消息进行解析,获得消息类型,根据消息类型,得到需要回调的JavaScript函数,然后将消息中的各设备的上下线,作为参数,传递给该JavaScript函数,完成函数调用操作。
8)浏览器的页面将JavaScript函数实现的方法,完成页面的渲染,达到设备上下线状态的准确展示及提示操作用户设备状态变更的目的。
本发明并不局限于前述的具体实施方式。本发明扩展到任何在本说明书中披露的新特征或任何新的组合,以及披露的任一新的方法或过程的步骤或任何新的组合。