一种基于Websocket的数据推送方法及系统与流程

文档序号:15394903发布日期:2018-09-08 01:57阅读:216来源:国知局

本说明书实施例涉及网络通信技术领域,尤其涉及一种基于websocket的数据推送方法及系统。



背景技术:

b/s(browser/server,浏览器/服务器模式)架构的服务中,服务器可以通过建立websocket连接,在有新数据产生时,向浏览器页面推送数据,从而确保页面中所展示的数据的实时性。

浏览器页面加载完成后,与服务器建立websocket连接,服务器将该页面加入到数据推送队列中。当有新数据产生时,服务端将新数据主动推送到队列中的各个页面。如果浏览器页面关闭,则将该页面从数据推送队列中移除,服务器将不再向该页面推送新数据。

但是,如果浏览器被最小化,或者切换到其他应用,则浏览器中打开并与服务器建立websocket连接的页面将失去焦点,无法继续正常处理与展示服务器推送过来的数据。随着时间的推移,推送的数据量将逐渐积累,使该页面占用越来越多的计算机系统资源,甚至可能造成浏览器的崩溃。



技术实现要素:

有鉴于此,本说明书实施例提供一种基于websocket的数据推送方法及系统,技术方案如下:

根据本说明书实施例的第一方面,提供一种基于websocket的数据推送方法,其特征在于,所述方法包括:

浏览器监测目标页面的焦点情况,所述目标页面为已加入服务器推送队列的浏览器页面;

浏览器在监测到所述目标页面失去焦点的情况下,向服务器发送所述目标页面的数据推送暂停通知;

服务器在接收到浏览器发送的暂停通知后,暂停对所述目标页面的数据推送,并记录该目标页面的已推送数据位置;

浏览器在监测到所述目标页面获得焦点的情况下,向服务器发送所述目标页面的数据推送恢复通知;

服务器在接收到浏览器发送的恢复通知后,根据预设恢复推送规则,恢复对所述目标页面的、所述已推送数据位置之后的数据推送。

根据本说明书实施例的第二方面,提供一种基于websocket的数据推送方法,应用于浏览器,其特征在于,所述方法包括:

监测目标页面的焦点情况,所述目标页面为已加入服务器推送队列的浏览器页面;

在监测到所述目标页面失去焦点的情况下,向服务器发送所述目标页面的数据推送暂停通知,以指示服务器暂停对所述目标页面的数据推送,并记录该目标页面的已推送数据位置;

在监测到所述目标页面获得焦点的情况下,向服务器发送所述目标页面的数据推送恢复通知,以指示服务根据预设恢复推送规则,恢复对所述目标页面的、所述已推送数据位置之后的数据推送。

根据本说明书实施例的第三方面,提供一种基于websocket的数据推送方法,应用于服务器,其特征在于,所述方法包括:

在接收到浏览器发送的暂停通知后,暂停对通知指定的目标页面的数据推送,并记录该目标页面的已推送数据位置,其中,所述目标页面为已加入服务器推送队列的浏览器页面,所述暂停通知为浏览器在监测到所述目标页面失去焦点的情况下,向服务器发送的所述目标页面的数据推送暂停通知;

在接收到浏览器发送的恢复通知后,根据预设恢复推送规则,恢复对通知指定的目标页面的、所述已推送数据位置之后的数据推送,其中,所述恢复通知为浏览器在监测到所述目标页面获得焦点的情况下,向服务器发送的所述目标页面的数据推送恢复通知。

根据本说明书实施例的第四方面,提供一种基于websocket的数据推送系统,其特征在于,所述系统包括:浏览器与服务器;

浏览器监测目标页面的焦点情况,所述目标页面为已加入服务器推送队列的浏览器页面;

浏览器在监测到所述目标页面失去焦点的情况下,向服务器发送所述目标页面的数据推送暂停通知;

服务器在接收到浏览器发送的暂停通知后,暂停对所述目标页面的数据推送,并记录该目标页面的已推送数据位置;

浏览器在监测到所述目标页面获得焦点的情况下,向服务器发送所述目标页面的数据推送恢复通知;

服务器在接收到浏览器发送的恢复通知后,根据预设恢复推送规则,恢复对所述目标页面的、所述已推送数据位置之后的数据推送。

根据本说明书实施例的第五方面,提供一种基于websocket的数据推送装置,应用于浏览器,其特征在于,所述装置包括:

页面监测模块,用于监测目标页面的焦点情况,所述目标页面为已加入服务器推送队列的浏览器页面;

暂停通知模块,用于在监测到所述目标页面失去焦点的情况下,向服务器发送所述目标页面的数据推送暂停通知,以指示服务器暂停对所述目标页面的数据推送,并记录该目标页面的已推送数据位置;

恢复通知模块,用于在监测到所述目标页面获得焦点的情况下,向服务器发送所述目标页面的数据推送恢复通知,以指示服务根据预设恢复推送规则,恢复对所述目标页面的、所述已推送数据位置之后的数据推送。

根据本说明书实施例的第六方面,提供一种基于websocket的数据推送装置,应用于服务器,其特征在于,所述装置包括:

推送暂停模块,用于在接收到浏览器发送的暂停通知后,暂停对通知指定的目标页面的数据推送,并记录该目标页面的已推送数据位置,其中,所述目标页面为已加入服务器推送队列的浏览器页面,所述暂停通知为浏览器在监测到所述目标页面失去焦点的情况下,向服务器发送的所述目标页面的数据推送暂停通知;

推送恢复模块,用于在接收到浏览器发送的恢复通知后,根据预设恢复推送规则,恢复对通知指定的目标页面的、所述已推送数据位置之后的数据推送,其中,所述恢复通知为浏览器在监测到所述目标页面获得焦点的情况下,向服务器发送的所述目标页面的数据推送恢复通知。

本说明书实施例所提供的技术方案,对浏览器中打开并与服务器建立websocket连接的页面,进行失去与获得焦点事件的监测,如果监测到该页面失去焦点则暂停推送,如果监测到获得焦点则恢复推送,从而免除在页面失去焦点到重新获得焦点之间,累计推送的数据量对计算机系统资源的占用,避免造成浏览器崩溃。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。

此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。

附图说明

为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。

图1是基于websocket的数据推送方法的一种交互流程示意图;

图2是本说明书实施例的基于websocket的数据推送系统的结构示意图;

图3是本说明书实施例的基于websocket的数据推送方法的一种流程示意图;

图4是本说明书实施例的基于websocket的数据推送方法的另一种流程示意图;

图5是本说明书实施例的基于websocket的数据推送方法的又一种流程示意图;

图6是本说明书实施例的基于websocket的数据推送装置的第一种结构示意图;

图7是本说明书实施例的基于websocket的数据推送装置的第二种结构示意图。

具体实施方式

为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。

随着互联网的普及,b/s架构的服务也被日益广泛地使用,b/s架构的功能设计中,通常会有展示实时数据的需求。

传统的实现方式中可以采用javascript轮询方案,在页面加载完成后,通过使用javascript的setinterval函数,周期性的向服务端请求新的数据,以获取并在浏览器页面展示实时数据。但这种方式存在一定的缺陷,首先轮询间隔时间不易确定:如果间隔时间过长,则无法保证实时性;如果间隔时间过短,频繁的请求不能保证有数据返回,反而容易造成浏览器和服务器的资源浪费,以及增加服务器的访问压力。

websocket技术的出现改善了上述问题,基于websocket的b/s架构服务中,当有新数据产生时,由服务器主动向浏览器推送数据,从而在确保数据实时性的同时,有效减少了传统方式中可能产生的多余访问量。如图1所示为基于websocket的数据推送的一种交互流程示意图。浏览器中的页面加载完成后,向服务器发送握手请求,服务器响应该请求后,将该页面加入到数据推送队列中,之后,当有新数据产生时,服务器便将新数据主动推送至推送队列中的各个页面,页面接收到服务器推送的数据后,可以进行数据处理、展示等操作。如果该页面关闭,则向服务器发送关闭请求,则服务器会将该页面从推送队列中移除,即不再向该页面推送新数据。

但是,尽管上述方案解决了传统方案中的问题,也存在一定的缺陷。因为在服务器将某一页面加入推送队列后,一旦该页面失去焦点,就无法继续正常处理、展示服务器推送的数据,随着时间的推移与累积推送的数据量的增加,该页面所占用的计算机系统资源(内存)会越来越多,甚至可能造成浏览器的崩溃,并且当页面重新获取焦点后,累积推送的数据需要一次性地进行处理、展示,将造成浏览器卡顿,使数据展示效果变差。

为了解决上述技术问题,本说明书实施例提供一种基于websocket的数据推送方法,该方法涉及浏览器及服务器,对应的系统架构示意图如图2所示,包括浏览器10和服务器20。

本说明书实施例中,浏览器中打开的目标页面,已经与服务器建立websocket连接,并加入服务器的推送队列。服务器的具体形式,可以是特定的一台服务器或服务器集群等形式。浏览器与服务器可通过各种形式的网络实现通信连接,本说明书对此并不需要进行限定。此外,本说明书实施例中所指的服务器向浏览器页面推送数据,可以是直接将数据发送至页面,也可以是将数据发送至打开该页面的客户端,并由该客户端对数据进行页面展示等操作。

图3为本说明书实施例提供的基于websocket的数据推送方法的交互流程图,具体可以包括以下步骤:

s301,浏览器监测目标页面的焦点情况,所述目标页面为已加入服务器推送队列的浏览器页面;

s302,浏览器在监测到所述目标页面失去焦点的情况下,向服务器发送所述目标页面的数据推送暂停通知;

s303,服务器在接收到浏览器发送的暂停通知后,暂停对所述目标页面的数据推送,并记录该目标页面的已推送数据位置;

s304,浏览器在监测到所述目标页面获得焦点的情况下,向服务器发送所述目标页面的数据推送恢复通知;

s305,服务器在接收到浏览器发送的恢复通知后,根据预设恢复推送规则,恢复对所述目标页面的、所述已推送数据位置之后的数据推送。

本说明书实施例提供的方案中,由浏览器对已加入服务器推送队列的目标页面,进行焦点失去与获得事件的监测,如果监测到目标页面失去焦点,则可以调用服务器对应的接口,通知服务器暂停向该目标页面推送新的数据。具体地,服务器接收到该暂停通知后,可以将该目标页面从所述推送队列中移除。此外,服务器还将记录该目标页面的已推送数据位置,以便于作为后续恢复数据推送时的推送起点。

服务器暂停向该页面推送数据后,浏览器仍将持续对该页面的焦点失去与获得事件的监测,如果监测到该目标页面重新获得焦点,则可以调用服务器对应的接口,通知服务器恢复向该目标页面推送数据。具体地,服务器接收到该恢复通知后,可以先推送在暂停期间的未推送历史数据,再将该目标页面重新加入推送队列中,以便后续有新的数据时,向该目标页面推送新数据。

暂停期间的未推送历史数据,即暂停时所记录的已推送数据位置、到恢复时的数据位置之间的数据,服务器推送在暂停期间的未推送历史数据时,也可以根据不同的恢复推送规则,采取不同的方式进行推送,恢复推送规则由用户预先进行设置,具体的可以有多种方案。

例如,由于服务器所推送的数据是实时更新的,之后推送的数据可能是对之前推送的数据的更新,而暂停时间越长,未推送的历史数据中已经被更新的无效数据可能越多,因此,可以只推送n条最新的数据,n可以由用户进行设定,特别的,如果设定n为0,则表示不再推送历史数据。

又例如,可以推送全部未推送的历史数据,但为了避免一次性全部推送大量数据,造成浏览器卡顿等问题,可以分批次进行推送,每次推送m条历史数据,m也可以由用户进行设定。

为了更清楚地说明本说明书实施例的基于websocket的数据推送方案,下面分别再从单侧的角度,对浏览器与服务器所执行的基于websocket的数据推送方法进行说明:

图4所示为浏览器所执行的基于websocket的数据推送方法流程图,具体可以包括以下步骤:

s401,监测目标页面的焦点情况,所述目标页面为已加入服务器推送队列的浏览器页面;

s402,在监测到所述目标页面失去焦点的情况下,向服务器发送所述目标页面的数据推送暂停通知,以指示服务器暂停对所述目标页面的数据推送,并记录该目标页面的已推送数据位置;

s403,在监测到所述目标页面获得焦点的情况下,向服务器发送所述目标页面的数据推送恢复通知,以指示服务根据预设恢复推送规则,恢复对所述目标页面的、所述已推送数据位置之后的数据推送。

图5所示为服务器所执行的基于websocket的数据推送方法流程图,具体可以包括以下步骤:

s501,在接收到浏览器发送的暂停通知后,暂停对通知指定的目标页面的数据推送,并记录该目标页面的已推送数据位置,其中,所述目标页面为已加入服务器推送队列的浏览器页面,所述暂停通知为浏览器在监测到所述目标页面失去焦点的情况下,向服务器发送的所述目标页面的数据推送暂停通知;

s502,在接收到浏览器发送的恢复通知后,根据预设恢复推送规则,恢复对通知指定的目标页面的、所述已推送数据位置之后的数据推送,其中,所述恢复通知为浏览器在监测到所述目标页面获得焦点的情况下,向服务器发送的所述目标页面的数据推送恢复通知。

关于浏览器与服务器的单侧执行方法细节,可以参见前面实施例的描述,这里不再赘述。

下面结合一个更为具体的实例,对本说明书提供的基于websocket的数据推送方法进行说明。

假设用户使用浏览器打开某天气预报网站,查询当天的各项天气指数,用户所打开的页面,将被网站服务器加入天气数据推送队列,并展示网站服务器推送的最新天气数据,使用户可以在页面中看到这些数据,例如北京市当前的温度、湿度、风力、污染指数等。

如果用户并未关闭该天气预报网站的网页,而是在14点06分将浏览器最小化、或者浏览其他页面,则浏览器将监测到该页面失去焦点,并调用该网站服务器的对应接口,通知该服务器暂停向该页面推送新的天气数据。该网站服务器接收到这一通知后,将该页面从天气数据推送队列移除,并记录已推送数据位置为“14:06pm”。

如果用户之后在14点33分又一次在该已打开的页面中查看天气指数,则浏览器将监测到该页面重新获得焦点,并调用该网站服务器的对应接口,通知该服务器恢复向该网页推送新的天气数据。该网站服务器接收到这一通知后,将首先推送未推送的历史数据。

假设该网站服务器从每天零点开始,每5分钟向数据推送队列中的页面,推送一次温度、湿度与风力数据,每10分钟向数据推送队列中的页面,推送一次污染指数与紫外线指数数据,则在14点05分至14点33分之间的27分钟内,该网站服务器未向该页面推送的历史数据共8条,而预先设定了在恢复推送时,只推送最新3条天气数据。

因此,该网站服务器会将本应在14点25推送的一条温度、湿度与风力数据,及本应在14点30推送的一条温度、湿度与风力数据和一条污染指数与紫外线指数数据,一次推送至该页面,并在推送完成后,将该页面重新加入数据推送队列,以便在后续的如14点35分更新数据时,再向该网页推送新的数据。

该页面接收到服务器首先推送的3条历史数据后,将一次处理与展示在页面上,因而用户将看到该网站服务器在14点30分更新的温度、湿度、风力、污染指数及紫外线指数数据。

可见,应用上述方案,对页面的失去焦点与获得焦点的情况进行监测,在页面获得焦点时,将被加入服务器的数据推送队列,由服务器在数据更新时,主动将新数据推送到该页面,确保页面中展示的数据的实时性。

而在页面失去焦点时,将被从数据推送队列中移除,服务器暂时不再向该页面推送数据,从而避免占用越来越多的计算机系统资源,并且在页面重新获得焦点,而恢复向该页面推送数据前,首先采用一定的策略,合理地将历史数据推送至该页面,从而避免一次性推送大量历史数据,导致浏览器卡顿等问题。

相应于上述方法实施例,本说明书实施例还提供一种基于websocket的数据推送装置,应用于浏览器,参见图6所示,该装置可以包括:

页面监测模块110,用于监测目标页面的焦点情况,所述目标页面为已加入服务器推送队列的浏览器页面;

暂停通知模块120,用于在监测到所述目标页面失去焦点的情况下,向服务器发送所述目标页面的数据推送暂停通知,以指示服务器暂停对所述目标页面的数据推送,并记录该目标页面的已推送数据位置;

恢复通知模块130,用于在监测到所述目标页面获得焦点的情况下,向服务器发送所述目标页面的数据推送恢复通知,以指示服务根据预设恢复推送规则,恢复对所述目标页面的、所述已推送数据位置之后的数据推送。

本说明书实施例还提供一种基于websocket的数据推送装置,应用于服务器,参见图7所示,该装置可以包括:

推送暂停模块210,用于在接收到浏览器发送的暂停通知后,暂停对通知指定的目标页面的数据推送,并记录该目标页面的已推送数据位置,其中,所述目标页面为已加入服务器推送队列的浏览器页面,所述暂停通知为浏览器在监测到所述目标页面失去焦点的情况下,向服务器发送的所述目标页面的数据推送暂停通知;

推送恢复模块220,用于在接收到浏览器发送的恢复通知后,根据预设恢复推送规则,恢复对通知指定的目标页面的、所述已推送数据位置之后的数据推送,其中,所述恢复通知为浏览器在监测到所述目标页面获得焦点的情况下,向服务器发送的所述目标页面的数据推送恢复通知。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

虽然本说明书包含许多具体实施细节,但是这些不应被解释为限制任何发明的范围或所要求保护的范围,而是主要用于描述特定发明的具体实施例的特征。本说明书内在多个实施例中描述的某些特征也可以在单个实施例中被组合实施。另一方面,在单个实施例中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合来实施。此外,虽然特征可以如上所述在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合中的一个或多个特征在一些情况下可以从该组合中去除,并且所要求保护的组合可以指向子组合或子组合的变型。

类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求这些操作以所示的特定顺序执行或顺次执行、或者要求所有例示的操作被执行,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中均需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中,或者封装成多个软件产品。

由此,主题的特定实施例已被描述。其他实施例在所附权利要求书的范围以内。在某些情况下,权利要求书中记载的动作可以以不同的顺序执行并且仍实现期望的结果。此外,附图中描绘的处理并非必需所示的特定顺序或顺次顺序,以实现期望的结果。在某些实现中,多任务和并行处理可能是有利的。

以上所述仅为本说明书实施例的较佳实施例而已,并不用以限制本说明书实施例,凡在本说明书实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书实施例保护的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1