发明内容
有鉴于此,本申请提供一种消息推送与页面更新的方法、装置及数据处理系统。
根据本申请实施例的第一方面,提供一种消息推送的方法,所述方法应用于代理服务器中,所述方法包括:
接收各客户端上报的页面定位信息,所述页面定位信息包括客户端当前所处的客户端页面的页面标识以及当前所处的页面模块的页面模块标识;
分别获取所述客户端的客户端信息,并将所述页面定位信息与上报该页面定位信息的客户端的客户端信息进行关联;
获取业务服务器推送的页面模块更新消息,并确定与所述页面模块更新消息匹配的目标页面定位信息;
根据所述目标页面定位信息关联的客户端信息,将所述页面模块更新消息发送至对应的客户端中,以由所述客户端按照所述页面模块更新消息更新对应的页面模块。
可选地,所述页面定位信息携带用户唯一标识;所述客户端信息包括异步上下文信息;
所述分别获取所述客户端的客户端信息,包括:
根据所述页面定位信息携带的用户唯一标识,从保存的所有会话中查找包含所述用户唯一标识的目标会话;
从所述目标会话中查找异步上下文信息。
可选地,所述获取业务服务器推送的页面模块更新消息,包括:
从发布订阅消息系统中消费以各页面定位信息为话题的消息队列,以获得所述页面定位信息对应的页面模块更新消息;其中,所述页面模块更新消息由业务服务器存入所述发布订阅消息系统中;
所述确定与所述页面模块更新消息匹配的目标页面定位信息,包括:
将与所述页面模块更新消息对应的主题相同的页面定位信息作为目标页面定位信息。
根据本申请实施例的第二方面,提供一种页面更新的方法,所述方法应用于客户端中,所述方法包括:
获取用户在当前客户端页面定位的页面定位信息,并将所述页面定位信息上报至代理服务器中,所述页面定位信息包括客户端当前所处的客户端页面的页面标识以及当前所处的页面模块的页面模块标识;
接收所述代理服务器基于所述页面定位信息推送的页面模块更新消息;
根据所述页面模块更新消息更新对应的页面模块。
可选地,所述根据所述页面模块更新消息更新对应的页面模块,包括:
基于所述页面模块更新消息,确定当前所处的页面模块与所述页面模块更新消息是否匹配,其中,所述页面模块更新消息包括目标页面标识以及目标页面模块标识;
若是,则采用所述页面模块更新消息对当前所处的页面模块进行页面更新。
根据本申请实施例的第三方面,提供一种消息推送的方法,所述方法应用于业务服务器中,所述方法包括:
检测应用程序中各页面的页面数据的变化,并获取发生变化的页面数据;
根据所述发生变化的页面数据生成页面模块更新消息;
将所述页面模块更新消息推送至代理服务器中。
可选地,所述根据所述发生变化的页面数据生成页面模块更新消息,包括:
根据所述发生变化的页面数据,确定该页面数据所处的页面模块标识;
获取所述页面模块标识对应的其他页面数据;
将所述发生变化的页面数据以及所述其他页面数据按照预设的排序规则进行排序,并根据所述排序的结果生成页面模块更新消息。
根据本申请实施例的第四方面,提供一种消息推送装置,所述装置应用于代理服务器中,所述装置包括:
页面定位信息接收单元,用于接收各客户端上报的页面定位信息,所述页面定位信息包括客户端当前所处的客户端页面的页面标识以及当前所处的页面模块的页面模块标识;
客户端信息获取单元,用于分别获取所述客户端的客户端信息;
信息关联单元,用于将所述页面定位信息与上报该页面定位信息的客户端的客户端信息进行关联;
页面模块更新消息获取单元,用于获取业务服务器推送的页面模块更新消息,并确定与所述页面模块更新消息匹配的目标页面定位信息;
页面模块更新消息发送单元,用于根据所述目标页面定位信息关联的客户端信息,将所述页面模块更新消息发送至对应的客户端中,以由所述客户端按照所述页面模块更新消息更新对应的页面模块。
根据本申请实施例的第五方面,提供一种页面更新装置,所述装置应用于客户端中,所述装置包括:
页面定位信息上报单元,用于获取用户在当前客户端页面定位的页面定位信息,并将所述页面定位信息上报至代理服务器中,所述页面定位信息包括客户端当前所处的客户端页面的页面标识以及当前所处的页面模块的页面模块标识;
页面模块更新消息接收单元,用于接收所述代理服务器基于所述页面定位信息推送的页面模块更新消息;
页面模块更新单元,用于根据所述页面模块更新消息更新对应的页面模块。
根据本申请实施例的第六方面,提供一种消息推送装置,所述装置应用于业务服务器中,所述装置包括:
页面数据检测单元,用于检测应用程序中各页面的页面数据的变化,并获取发生变化的页面数据;
页面模块更新消息生成单元,用于根据所述发生变化的页面数据生成页面模块更新消息;
页面模块更新消息推送单元,用于将所述页面模块更新消息推送至代理服务器中。
根据本申请实施例的第七方面,提供一种数据处理系统,所述数据处理系统包括客户端、代理服务器及业务服务器;
所述客户端用于获取用户在当前客户端页面定位的页面定位信息,并将所述页面定位信息上报至代理服务器中,以及,在接收到所述代理服务器针对所述页面定位信息推送的页面模块更新消息时,根据所述页面模块更新消息更新对应的页面模块;
所述代理服务器用于根据各客户端上报的页面定位信息,获取各客户端的客户端信息,并将所述页面定位信息与上报该页面定位信息的客户端的客户端信息进行关联;以及获取业务服务器推送的页面模块更新消息,并确定与所述页面模块更新消息匹配的目标页面定位信息;根据所述目标页面定位信息关联的客户端信息,将所述页面模块更新消息发送至对应的客户端中;
所述业务服务器用于检测应用程序中各页面的页面数据的变化,并获取发生变化的页面数据;根据所述发生变化的页面数据生成页面模块更新消息,并将所述页面模块更新消息推送至代理服务器中。
根据本申请实施例的第八方面,提供一种设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法的步骤。
根据本申请实施例的第九方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述方法的步骤。
本申请提供的方案具有如下有益效果:
在本申请实施例中,由代理服务器负责与客户端及业务服务器进行通信,使得客户端无需关心业务服务器侧创建消息实体的依据,业务服务器也无需依赖于客户端的订阅行为进行数据拉取,可以避免消耗过多的通信资源。
另外,代理服务器在接收到各客户端上报的页面定位信息以后,通过获得各客户端的客户端信息,并将页面定位信息与上报该页面定位信息的客户端的客户端信息进行关联,以及业务服务器推送的页面模块更新消息,并确定与页面模块更新消息匹配的目标页面定位信息,从而将页面模块更新消息广播至该目标页面定位信息对应的客户端中,在这个过程中,在各客户端无登录状态或者无共有特征标识(例如共有群组或者处于同一频道)的情况下,也能实现消息以组广播推送的目的,而且实时性更强、资源消耗更少。
另外,代理服务器发送至客户端的页面模块更新消息为页面中的显示的页面模块的更新消息,而非整个页面的消息,可以减少数据传输的带宽流量,节约传输成本,减轻了客户端处理数据的压力,降低了刷新时延,使得用户无感知,提高了用户的体验。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
参考图1,示出了本申请一示例性实施例示出的一种消息推送的方法实施例的步骤流程图,本申请实施例可以应用于代理服务器proxy中,在一种实施方式中,该代理服务器可以来源于代理层,代理层中可以包括由多个代理服务器组成的集群。
在一种可能的网络结构中,代理服务器可以分别与客户端及业务服务器Server进行通信,在一种可能的实施例中,为了节省系统资源,代理服务器可以与客户端之间保持长连接,代理服务器也可以与业务服务器之间保持长连接。
本实施例可以由代理服务器获取由业务服务器推送的数据,并将该数据推送至客户端侧进行显示。如图1所示,本实施例具体可以包括如下步骤:
步骤101,接收各客户端上报的页面定位信息。
作为一种示例,页面定位信息至少可以包括客户端当前开启的客户端页面的页面标识以及用户在该客户端页面中定位的页面模块的页面模块标识(页面模块标识又可以称为用户定位的当前锚点的锚点标识)。在一种实施方式中,页面标识以及页面模块标识可以以组键的方式来表示页面定位信息。例如,假设页面标识为P,页面模块标识为M,则页面定位信息可以表示为P+M。
在实现时,针对客户端而言,客户端可以检测当前用户开启的客户端页面,并获取该客户端页面的页面标识,然后检测用户在该客户端页面的滑动等定位操作,以确定用户定位到的页面模块,并确定该页面模块的页面模块标识。
例如,如图2的客户端页面示意图所示,当用户点击“团战广场”时,“团战广场”作为一个客户端页面,客户端和服务端可以提前将该页面的页面标识约定为“Square”。如图2所示,“团战广场”页面上有多个页面模块,如“主播开黑”模块、“站队夺宝”模块等,可以提前约定“主播开黑”模块的页面模块标识为“Game”、“站队夺宝”模块的页面模块标识为“Vote”。当用户点击“团战广场”标签tab或者左右滑动至该页面时,客户端可以确定当前客户端页面的页面标识为“Square”,随后若用户上下滑动“团战广场”页面,客户端可以计算当前显示的页面高度,当某个页面模块的标题位置在客户端页面的0-50%位置时,则可以判定为用户定位到该页面模块,并获得该页面模块的页面模块标识,例如,当用户定位到“主播开黑”模块时,获得其页面模块标识为“Game”,则客户端可以得到的页面定位信息为“Square-Game”。又如,当用户定位到“站队夺宝”模块时,获得其页面模块标识为“Vote”,则客户端可以得到的页面定位信息为“Square-Vote”。
客户端确定用户在当前客户端页面定位的页面定位信息以后,可以将该页面定位信息上报至代理服务器。
步骤102,分别获取所述客户端的客户端信息,并将所述页面定位信息与上报该页面定位信息的客户端的客户端信息进行关联。
作为一种示例,客户端信息可以包括用户唯一标识、异步上下文信息AsyncContext等。其中,AsyncContext用于实现一个请求可以暂停处理,然后在将来的某个时候重新处理该请求,以释放当前请求处理过程中占用的线程。
在本实施例的一种可能的实施方式中,步骤102可以包括如下子步骤:
子步骤S11,根据所述页面定位信息携带的用户唯一标识,从保存的所有会话中查找包含所述用户唯一标识的目标会话;
子步骤S12,从所述目标会话中查找异步上下文信息。
在一种例子中,客户端在上报页面定位信息时,可以携带用户唯一标识。作为一种示例,该用户唯一标识可以为客户端首次安装后记录到的本地的平台唯一标识,如用户PIN(Personal Identification Number)码(User PIN)等。
代理服务器在接收到各客户端上报的页面定位信息以后,可以解析出用户唯一标识,并记录该页面定位信息及对应的用户唯一标识。
代理服务器在获得用户PIN码以后,可以根据该用户PIN码从预先保存的所有会话Session中查找包含该用户PIN码的目标会话。
Session是客户端到服务端的一次会话或者连接会话,作为一种示例,Session可以包括用户PIN码、连接创建时间、异步上下文信息等。则代理服务器可以根据该接收的用户PIN码查找本地保存的所有Session,以获得包含该用户PIN码的目标Session,然后从目标Session中提取异步上下文信息。
在获得客户端的异步上下文信息以后,保存该异步上下文信息同时不释放,就可以维护客户端与代理服务器之间的长连接。在一种实施例中,在保存客户端的异步上下文信息时,可以将该异步上下文信息与该客户端上报的页面定位信息进行关联。
在一种实施方式中,可以以页面定位信息作为Key,以异步上下文信息作为Value,将页面定位信息映射异步上下文信息散列存储在Redis(Redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库)中。
例如,针对页面定位信息“Square-Vote”当前有两台客户端上报,对应的AsyncContext分别描述为A1及B1;针对页面定位信息“Square-Game”当前有三台客户端上报,对应的AsyncContext分别描述为A2、B2及C2;那么Redis里面可以有如下记录:Square-Vote={A1,B1},Square-Game={A2,B2,C2}。
步骤103,获取业务服务器推送的页面模块更新消息,并确定与所述页面模块更新消息匹配的目标页面定位信息。
在该步骤中,代理服务器可以接收业务服务器推送的页面模块更新消息。
针对业务服务器而言,其可以采用如下方式获取页面模块更新消息:
业务服务器可以定期收集统计应用程序中各页面的页面数据的变化,例如,针对图2的场景,“主播开黑”模块中可能发生变化的页面数据可以包括但不限于:游戏队伍中的成员数、主播头像、主播昵称、成员头像、当前游戏名称、游戏配置的背景图、PK组双方的支持率、对战信息等等。
当业务服务器检测到页面数据发生变化时,可以获取该发生变化的页面数据,并根据获取的该页面数据生成页面模块更新消息。在一种例子中,业务服务器可以根据业务发生变化的页面数据确定该页面数据所处的页面模块标识,然后获取该页面模块标识对应的其他页面数据,并计算该其他页面数据与该发生变化的页面数据的排序,根据排序的结果生成页面模块更新消息。例如,在“主播开黑”模块中,当PK组中任一方的数据发生变化时,在检测到变化以后,可以将队员多的一方排在前面;若队员数量相同,则可以将先开始游戏或先加入游戏或发起游戏的乙方排列在前面。又如,在“站队夺宝”模块中,可以将先开始游戏的一方排序在前面,后开始游戏的一方排序在后面。业务服务器在获得页面模块更新消息以后,可以将该页面模块更新消息发送至代理服务器中。
在本实施例的一种可能的实施方式中,步骤103可以包括如下子步骤:
从发布订阅消息系统中消费以各页面定位信息为话题的消息队列,以获得所述页面定位信息对应的页面模块更新消息。
作为一种示例,发布订阅消息系统可以为Kafka系统(Kafka是一种高吞吐量的分布式发布订阅消息系统,可以实现消息队列流管理)。
其中,页面模块更新消息由业务服务器存入所述发布订阅消息系统中。
对于业务服务器而言,当其获得页面模块更新消息以后,可以将该页面模块更新消息推送至Kafka中,Kafka接收到该页面模块更新消息以后,以该页面模块更新消息对应的页面标识以及页面模块标识创建话题topic,并将该页面模块更新消息存入该topic对应的消息队列中。
代理服务器则负责消费Kafka中的消息队列,在该步骤中,代理服务器可以消费Kafka中话提topic为收到的各页面定位信息(P+M)的消息队列,从而获得各页面定位信息对应的页面模块更新消息。
在本实施例的一种可能的实施方式中,所述确定与所述页面模块更新消息匹配的目标页面定位信息的步骤可以包括如下步骤:
将与所述页面模块更新消息对应的主题相同的页面定位信息作为目标页面定位信息。
具体的,针对获取的某个页面模块更新消息而言,代理服务器可以根据该页面模块更新消息的topic确定该页面模块更新消息对应的页面定位信息,将该页面定位信息作为目标页面定位信息。
步骤104,根据所述目标页面定位信息关联的客户端信息,将所述页面模块更新消息发送至对应的客户端中,以由所述客户端按照所述页面模块更新消息更新对应的页面模块。
在该步骤中,当代理服务器获取页面定位信息对应的页面模块更新消息时,可以将该页面模块更新消息广播至与该页面模块更新消息绑定的各客户端中,以由上述客户端根据页面模块更新消息更新对应的页面模块。
在一种实施方式中,代理服务器可以采用与该目标页面定位信息对应的异步上下文信息来将页面模块更新消息发送至对应的客户端中。
在本申请实施例中,由代理服务器负责与客户端及业务服务器进行通信,使得客户端无需关心业务服务器侧创建消息实体的依据,业务服务器也无需依赖于客户端的订阅行为进行数据拉取,可以避免消耗过多的通信资源。
另外,代理服务器在接收到各客户端上报的页面定位信息以后,通过获得各客户端的客户端信息,并将页面定位信息与上报该页面定位信息的客户端的客户端信息进行关联,以及业务服务器推送的页面模块更新消息,并确定与页面模块更新消息匹配的目标页面定位信息,从而将页面模块更新消息广播至该目标页面定位信息对应的客户端中,在这个过程中,在各客户端无登录状态或者无共有特征标识(例如共有群组或者处于同一频道)的情况下,也能实现消息以组广播推送的目的,而且实时性更强、资源消耗更少。
另外,代理服务器发送至客户端的页面模块更新消息为页面中的显示的页面模块的更新消息,而非整个页面的消息,可以减少数据传输的带宽流量,节约传输成本。
参考图3,示出了本申请一示例性实施例示出的一种页面更新的方法实施例的步骤流程图,本申请实施例可以应用于客户端中,具体可以包括如下步骤:
步骤301,获取用户在当前客户端页面定位的页面定位信息,并将所述页面定位信息上报至代理服务器中。
作为一种示例,页面定位信息至少可以包括客户端当前开启的客户端页面的页面标识以及用户在该客户端页面中定位的页面模块的页面模块标识。在一种实施方式中,页面标识以及页面模块标识可以以组键的方式来表示页面定位信息。例如,假设页面标识为P,页面模块标识为M,则页面定位信息可以表示为P+M。
在该步骤中,客户端可以检测当前用户开启的客户端页面,并获取该客户端页面的页面标识,然后检测用户在该客户端页面的滑动等定位操作,以确定用户定位到的页面模块,并确定该页面模块的页面模块标识。
例如,如图2的客户端页面示意图所示,当用户点击“团战广场”时,“团战广场”作为一个客户端页面,客户端和服务端可以提前将该页面的页面标识约定为“Square”。如图2所示,“团战广场”页面上有多个页面模块,如“主播开黑”模块、“站队夺宝”模块等,可以提前约定“主播开黑”模块的页面模块标识为“Game”、“站队夺宝”模块的页面模块标识为“Vote”。当用户点击“团战广场”标签tab或者左右滑动至该页面时,客户端可以确定当前客户端页面的页面标识为“Square”,随后若用户上下滑动“团战广场”页面,客户端可以计算当前显示的页面高度,当某个页面模块的标题位置在客户端页面的0-50%位置时,则可以判定为用户定位到该页面模块,并获得该页面模块的页面模块标识,例如,当用户定位到“主播开黑”模块时,获得其页面模块标识为“Game”,则客户端可以得到的页面定位信息为“Square-Game”。又如,当用户定位到“站队夺宝”模块时,获得其页面模块标识为“Vote”,则客户端可以得到的页面定位信息为“Square-Vote”。
客户端确定用户在当前客户端页面定位的页面定位信息以后,可以将该页面定位信息上报至代理服务器。
步骤302,接收所述代理服务器基于所述页面定位信息推送的页面模块更新消息。
在该步骤中,客户端可以接收代理服务器基于该页面定位信息推送的页面模块更新消息,然后客户端可以根据该页面模块更新消息进行对应的页面模块的更新。
作为一种示例,页面模块更新消息可以包括目标页面标识以及目标页面模块标识。
步骤303,根据所述页面模块更新消息更新对应的页面模块。
在本实施例的一种可能的实施方式中,步骤303可以包括如下子步骤:
基于所述页面模块更新消息,确定当前所处的页面模块与所述页面模块更新消息是否匹配;若是,则采用所述页面模块更新消息对当前所处的页面模块进行页面更新。
在一种实施方式中,客户端可以采用如下方式确定当前所处的页面模块与接收的页面模块更新消息是否匹配:
获取当前所处的页面模块对应的页面标识以及页面模块标识;若所述页面标识与所述目标页面标识一致且所述页面模块标识与所述目标页面模块标识一致,则判定当前所处的页面模块与所述页面模块更新消息匹配。
在该步骤中,客户端在接收到页面模块更新消息以后,可以从该页面模块更新消息中解析出目标页面标识以及目标页面模块标识,然后客户端可以判断当前所处的页面标识以及页面模块标识是否均与上述目标页面标识以及目标页面模块标识相同,若均相同,则表示客户端当前所述的页面模块需要更新,并采用该页面模块更新消息对当前所述的页面模块进行更新。
在本申请实施例中,客户端在向代理服务器上报当前所处的页面模块的页面定位信息以后,若接收到代理服务器根据该页面定位信息推送的页面模块更新消息,则可以按照该页面模块更新消息更新对应的页面模块,由于进行更新是只是进行局部页面的更新,无需更新整个客户端页面,减轻了客户端处理数据的压力,降低了刷新时延,使得用户无感知,提高了用户的体验。
参考图4,示出了本申请一示例性实施例示出的另一种消息推送的方法实施例的步骤流程图,本申请实施例可以应用于业务服务器中,具体可以包括如下步骤:
步骤401,检测应用程序中各页面的页面数据的变化,并获取发生变化的页面数据。
在该步骤中,业务服务器可以定期收集统计应用程序中各页面的页面数据的变化,例如,“团战广场”中有4个页面版块,则业务服务器可以执行4个线程的收集操作,每个线程负责一个页面板块的页面数据检测。
作为一种示例,页面数据可以包括页面模块中的各种数据,例如,针对图2的场景,“主播开黑”模块中可能发生变化的页面数据可以包括但不限于:游戏队伍中的成员数、主播头像、主播昵称、成员头像、当前游戏名称、游戏配置的背景图、PK组双方的支持率、对战信息等等。
步骤402,根据所述发生变化的页面数据生成页面模块更新消息。
在本实施例的一种可能的实施方式中,步骤402可以包括如下子步骤:
子步骤S21,根据所述发生变化的页面数据,确定该页面数据所处的页面模块标识。
子步骤S22,获取所述页面模块标识对应的其他页面数据。
子步骤S23,将所述发生变化的页面数据以及所述其他页面数据按照预设的排序规则进行排序,并根据所述排序的结果生成页面模块更新消息。
例如,假设发生变化的页面数据所处的页面模块标识为“Game”,对应于“主播开黑”模块,当“主播开黑”模块中某PK组中任一方的数据发生变化时,在检测到变化以后,可以获取该模块中的其他页面数据,并将该发生变化的页面数据以及上述其他页面数据按照预设的排序规则进行排序,比如可以将队员多的一方排在前面;若队员数量相同,则可以将先开始游戏或先加入游戏或发起游戏的乙方排列在前面,确当排序结果后,可以根据排序结果生成页面模块更新消息。
步骤403,将所述页面模块更新消息推送至代理服务器中。
在该步骤中,业务服务器可以将获得的页面模块更新消息推送至代理服务器中。
在本实施例的一种可能的实施方式中,步骤403进一步可以包括如下子步骤:
将所述页面模块更新消息发送至发布订阅消息系统中,以由所述发布订阅消息系统确定所述页面模块更新消息对应的主题,并将所述页面模块更新消息放入所述对应的主题的消息队列,所述消息队列由所述代理服务器消费。
作为一种示例,发布订阅消息系统可以为Kafka系统
在该步骤中,当业务服务器获得页面模块更新消息以后,可以将该页面模块更新消息推送至Kafka中,Kafka接收到该页面模块更新消息以后,可以以该页面模块更新消息对应的页面标识以及页面模块标识创建话题topic,并将该页面模块更新消息存入该topic对应的消息队列中。若Kafka中已存在该话题,则可以直接将该页面模块更新消息存入该topic对应的消息队列中。
消息队列中的消息可以由代理服务器来消费,从而获得该页面模块更新消息,并将该页面模块更新消息发送至对应的客户端中进行更新。
在本实施例中,业务服务器在检测到发生变化的页面数据以后,可以根据该发生变化的页面数据生成页面模块更新消息,并将该页面模块更新消息推送至代理服务器中,由业务服务器将该页面模块更新消息发送至对应的客户端中进行对应页面模块的页面更新。这个过程中业务服务器无需依赖于客户端的订阅行为进行数据拉取,可以避免消耗过多的通信资源。
为了使得本领域技术人员更好地理解本实施例,以下以图2的示意图所示的场景为例,结合图5的消息推送交互示意图,对本实施例的过程进行示例性说明,但应当理解的是,本示例是为了说明本实施例,但不应该理解为对本实施例的限制。
如图5所示,客户端可以包括客户端A1、客户端A2、客户端B1及客户端B2,代理层服务(即代理服务器)与业务服务器通过Kafka消息队列进行数据传输。
在本示例中,客户端A1与客户端B1的用户均停留在团战广场页的战队夺宝板块,两者分别向代理层服务上报组键为Square-Vote的页面定位信息,其中,客户端A1上报的页面定位信息携带客户端A1的用户PIN码,客户端B1上报的页面定位信息携带客户端B1的用户PIN码。客户端A2与客户端B2的用户均停留在团战广场页的主播开黑板块,两者分别向代理层服务上报组键为Square-Game的页面定位信息,其中,客户端A2上报的页面定位信息携带客户端A2的用户PIN码,客户端B2上报的页面定位信息携带客户端B2的用户PIN码。
另一方面,业务服务器收集团战广场页的游戏数据的数据变化,计算游戏更新信息,并将游戏更新信息作为推送结果推送到Kafka消息队列中,由代理层服务从Kafka消息队列中获取游戏更新信息。
代理层服务获得游戏更新信息以后,若该游戏更新信息为Square-Vote的更新数据,则将该Square-Vote的更新数据广播至客户端A1与客户端B1中,客户端A1与客户端B1接收到更新数据以后,分别对比当前组键与接收的更数据的组键是否相符,相符则更新对应的战队夺宝板块,否则继续上报页面定位信息并等待更新。类似的,若该游戏更新信息为Square-Game的更新数据,则代理层服务将该Square-Game的更新数据广播至客户端A2与客户端B2中,客户端A2与客户端B2接收到更新数据以后,分别对比当前组键与接收的更数据的组键是否相符,相符则更新对应的主播开黑板块,否则继续上报页面定位信息并等待更新。
与前述方法的实施例相对应,本申请还提供了一种消息推送装置及一种页面更新装置实施例。
本申请的装置实施例可以应用在电子设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图6所示,为本申请的装置所在设备的一种硬件结构图,除了图6所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的设备通常根据该装置的实际功能,还可以包括其他硬件,对此不再赘述。
请参考图7,示出了本申请一示例性实施例示出的一种消息推送装置实施例的结构框图,所述装置应用于代理服务器中,可以包括如下单元:
页面定位信息接收单元701,用于接收各客户端上报的页面定位信息,所述页面定位信息包括客户端当前所处的客户端页面的页面标识以及当前所处的页面模块的页面模块标识;
客户端信息获取单元702,用于分别获取所述客户端的客户端信息;
信息关联单元703,用于将所述页面定位信息与上报该页面定位信息的客户端的客户端信息进行关联;
页面模块更新消息获取单元704,用于获取业务服务器推送的页面模块更新消息,并确定与所述页面模块更新消息匹配的目标页面定位信息;
页面模块更新消息发送单元705,用于根据所述目标页面定位信息关联的客户端信息,将所述页面模块更新消息发送至对应的客户端中,以由所述客户端按照所述页面模块更新消息更新对应的页面模块。
在本实施例的一种可能的实施方式中,所述页面定位信息携带用户唯一标识;所述客户端信息包括异步上下文信息;
所述客户端信息获取单元702可以包括如下子单元:
目标会话确定子单元,用于根据所述页面定位信息携带的用户唯一标识,从保存的所有会话中查找包含所述用户唯一标识的目标会话;
上下文信息查找子单元,用于从所述目标会话中查找异步上下文信息。
在本实施例的一种可能的实施方式中,所述页面模块更新消息发送单元705具体可以用于:
根据与所述目标页面定位信息关联的异步上下文信息,将所述页面模块更新消息发送至对应的客户端中。
在本实施例的一种可能的实施方式中,所述页面模块更新消息获取单元704具体用于:
从发布订阅消息系统中消费以各页面定位信息为话题的消息队列,以获得所述页面定位信息对应的页面模块更新消息;其中,所述页面模块更新消息由业务服务器存入所述发布订阅消息系统中。
在本实施例的一种可能的实施方式中,所述页面模块更新消息获取单元704具体可以用于:
将与所述页面模块更新消息对应的主题相同的页面定位信息作为目标页面定位信息。
请参考图8,示出了本申请一示例性实施例示出的一种页面更新装置实施例的结构框图,所述装置应用于客户端中,可以包括如下单元:
页面定位信息上报单元801,用于获取用户在当前客户端页面定位的页面定位信息,并将所述页面定位信息上报至代理服务器中,所述页面定位信息包括客户端当前所处的客户端页面的页面标识以及当前所处的页面模块的页面模块标识;
页面模块更新消息接收单元802,用于接收所述代理服务器基于所述页面定位信息推送的页面模块更新消息;
页面模块更新单元803,用于根据所述页面模块更新消息更新对应的页面模块。
在本实施例的一种可能的实施方式中,所述页面模块更新单元803具体可以包括如下子单元:
匹配子单元,用于基于所述页面模块更新消息,确定当前所处的页面模块与所述页面模块更新消息是否匹配;若是,则调用页面更新子单元;
页面更新子单元,用于采用所述页面模块更新消息对当前所处的页面模块进行页面更新。
在本实施例的一种可能的实施方式中,所述页面模块更新消息包括目标页面标识以及目标页面模块标识;
所述匹配子单元具体用于:
获取当前所处的页面模块对应的页面标识以及页面模块标识;
若所述页面标识与所述目标页面标识一致且所述页面模块标识与所述目标页面模块标识一致,则判定当前所处的页面模块与所述页面模块更新消息匹配。
请参考图9,示出了本申请一示例性实施例示出的另一种消息推送装置实施例的结构框图,所述装置应用于业务服务器中,可以包括如下单元:
页面数据检测单元901,用于检测应用程序中各页面的页面数据的变化,并获取发生变化的页面数据;
页面模块更新消息生成单元902,用于根据所述发生变化的页面数据生成页面模块更新消息;
页面模块更新消息推送单元903,用于将所述页面模块更新消息推送至代理服务器中。
在本实施例的一种可能的实施方式中,所述页面模块更新消息生成单元902具体用于:
根据所述发生变化的页面数据,确定该页面数据所处的页面模块标识;
获取所述页面模块标识对应的其他页面数据;
将所述发生变化的页面数据以及所述其他页面数据按照预设的排序规则进行排序,并根据所述排序的结果生成页面模块更新消息。
在本实施例的一种可能的实施方式中,所述页面模块更新消息推送单元903具体用于:
将所述页面模块更新消息发送至发布订阅消息系统中,以由所述发布订阅消息系统确定所述页面模块更新消息对应的主题,并将所述页面模块更新消息放入所述对应的主题的消息队列,所述消息队列由所述代理服务器消费。
请参考图10,示出了本申请一示例性实施例示出的一种数据处理系统实施例的结构框图,所述数据处理系统可以包括客户端10、代理服务器20及业务服务器30。
所述客户端10用于获取用户在当前客户端页面定位的页面定位信息,并将所述页面定位信息上报至代理服务器中,以及,在接收到所述代理服务器针对所述页面定位信息推送的页面模块更新消息时,根据所述页面模块更新消息更新对应的页面模块;
所述代理服务器20用于根据各客户端上报的页面定位信息,获取各客户端的客户端信息,并将所述页面定位信息与上报该页面定位信息的客户端的客户端信息进行关联;以及获取业务服务器推送的页面模块更新消息,并确定与所述页面模块更新消息匹配的目标页面定位信息;根据所述目标页面定位信息关联的客户端信息,将所述页面模块更新消息发送至对应的客户端中;
所述业务服务器30用于检测应用程序中各页面的页面数据的变化,并获取发生变化的页面数据;根据所述发生变化的页面数据生成页面模块更新消息,并将所述页面模块更新消息推送至代理服务器中。
对于装置及系统实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。
以上所描述的装置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本申请还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述各方法实施例的步骤。
本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述各方法实施例的步骤。
本说明书中描述的主题及功能操作的实施例可以在以下中实现:数字电子电路、有形体现的计算机软件或固件、包括本说明书中公开的结构及其结构性等同物的计算机硬件、或者它们中的一个或多个的组合。本说明书中描述的主题的实施例可以实现为一个或多个计算机程序,即编码在有形非暂时性程序载体上以被数据处理装置执行或控制数据处理装置的操作的计算机程序指令中的一个或多个模块。可替代地或附加地,程序指令可以被编码在人工生成的传播信号上,例如机器生成的电、光或电磁信号,该信号被生成以将信息编码并传输到合适的接收机装置以由数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备、或它们中的一个或多个的组合。
本说明书中描述的处理及逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机执行,以通过根据输入数据进行操作并生成输出来执行相应的功能。所述处理及逻辑流程还可以由专用逻辑电路—例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)来执行,并且装置也可以实现为专用逻辑电路。
适合用于执行计算机程序的计算机包括,例如通用和/或专用微处理器,或任何其他类型的中央处理单元。通常,中央处理单元将从只读存储器和/或随机存取存储器接收指令和数据。计算机的基本组件包括用于实施或执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,例如磁盘、磁光盘或光盘等,或者计算机将可操作地与此大容量存储设备耦接以从其接收数据或向其传送数据,抑或两种情况兼而有之。然而,计算机不是必须具有这样的设备。此外,计算机可以嵌入在另一设备中,例如车载终端、移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏操纵台、全球定位系统(GPS)接收机、或例如通用串行总线(USB)闪存驱动器的便携式存储设备,仅举几例。
适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、媒介和存储器设备,例如包括半导体存储器设备(例如EPROM、EEPROM和闪存设备)、磁盘(例如内部硬盘或可移动盘)、磁光盘以及CD ROM和DVD-ROM盘。处理器和存储器可由专用逻辑电路补充或并入专用逻辑电路中。
虽然本说明书包含许多具体实施细节,但是这些不应被解释为限制任何发明的范围或所要求保护的范围,而是主要用于描述特定发明的具体实施例的特征。本说明书内在多个实施例中描述的某些特征也可以在单个实施例中被组合实施。另一方面,在单个实施例中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合来实施。此外,虽然特征可以如上所述在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合中的一个或多个特征在一些情况下可以从该组合中去除,并且所要求保护的组合可以指向子组合或子组合的变型。
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求这些操作以所示的特定顺序执行或顺次执行、或者要求所有例示的操作被执行,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中均需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中,或者封装成多个软件产品。
由此,主题的特定实施例已被描述。其他实施例在所附权利要求书的范围以内。在某些情况下,权利要求书中记载的动作可以以不同的顺序执行并且仍实现期望的结果。此外,附图中描绘的处理并非必需所示的特定顺序或顺次顺序,以实现期望的结果。在某些实现中,多任务和并行处理可能是有利的。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。