CN115883639A - 一种web实时消息推送方法及装置、设备、存储介质 - Google Patents

一种web实时消息推送方法及装置、设备、存储介质 Download PDF

Info

Publication number
CN115883639A
CN115883639A CN202111143668.8A CN202111143668A CN115883639A CN 115883639 A CN115883639 A CN 115883639A CN 202111143668 A CN202111143668 A CN 202111143668A CN 115883639 A CN115883639 A CN 115883639A
Authority
CN
China
Prior art keywords
information
timestamp information
timestamp
client
server
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111143668.8A
Other languages
English (en)
Inventor
邹孝恒
李杰亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Mobile Communications Group Co Ltd
China Mobile Suzhou Software Technology Co Ltd
Original Assignee
China Mobile Communications Group Co Ltd
China Mobile Suzhou Software Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China Mobile Communications Group Co Ltd, China Mobile Suzhou Software Technology Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN202111143668.8A priority Critical patent/CN115883639A/zh
Publication of CN115883639A publication Critical patent/CN115883639A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本发明实施例公开了一种web实时消息推送方法及装置、设备、存储介质;方法包括服务器基于Graphql服务和kafka服务,根据数据库中发生的修改操作的时间,生成第一时间戳消息并发送至客户端,客户端将接收到第二时间戳信息,第二时间戳信息为第一时间戳信息中客户端接收到的时间戳信息。根据第二时间戳信息,对第一时间戳信息进行对比,从而得到丢失信息,将丢失信息发送至客户端。本发明实施例能够在实现web消息的实时推送的基础上,通过比较客户端接收到的数据和服务器发送的数据差异,确定客户端和服务器在数据交互中是否存在数据丢失,若存在数据丢失,则确定丢失信息,并重新发送丢失信息;以提高数据发送的成功率,降低数据丢失的风险。

Description

一种web实时消息推送方法及装置、设备、存储介质
技术领域
本发明涉及信息技术领域,尤其涉及一种web实时消息推送方法及装置、设备、存储介质。
背景技术
关于web消息的推送,目前有两种方式。一种是客户端轮询的方式:客户端和服务器之间会一直进行通信,每隔一段时间客户端就向服务器段发送一次请示,以获取当前数据库中存储的最新数据。另一种是基于websocket协议的消息推动方式:客户端发出websocket连接请求,服务器响应,实现类似TCP握手的动作,从而在浏览器客户端和websocket服务端之间形成一条HTTP长连接快速通道,用于浏览器客户端和websocket服务端之间进行直接的数据互相传送,不需要再发起连接和响应。同时,浏览器客户端和websocket服务端都可以选择关系上述长连接。
但上述技术方案中,客户端轮询的方式,在轮询的间隔过长时,会导致用户不能及时接收到更新的数据;在轮询的间隔过短时,会导致查询请求过多,增加数据库的访问压力和服务器的负载;无法实现消息的实时推送。而基于websocket协议的消息推送方式,虽然可以实现消息的实时推送,但是存在服务器发送消息后,客户没有接收到消息,即消息丢失的情况。
发明内容
本发明实施例期望提供一种web实时消息推送方法及装置、设备、存储介质,能够在实现web消息的实时推送的基础上,通过比较客户端接收到的数据和服务器发送的数据之间的差异,确定客户端和服务器在数据交互中是否存在数据丢失,若存在数据丢失,则确定丢失信息,并重新发送丢失信息;以提高数据发送的成功率,降低数据丢失的风险。
本发明的技术方案是这样实现的:
本发明实施例提供一种web实时消息推送方法,所述方法应用于服务器,所述服务器设置有Graphql服务和kafka服务,所述方法包括:
通过所述Graphql服务接收修改标识获取请求;所述修改标识获取请求携带有修改信息;
响应于所述修改标识获取请求,根据所述修改信息,确定并通过所述Graphql服务发送所述修改信息对应的第一时间戳信息至客户端;
通过所述Graphql服务和所述kafka服务接收信息查询请求;所述信息查询请求携带有第二时间戳信息;其中,所述第二时间戳信息为所述客户端接收到的时间戳信息;
响应于所述信息查询请求,基于所述第二时间戳信息,从所述第一时间戳信息中,确定丢失信息并通过所述Graphql服务发送至所述客户端;其中,所述丢失信息为所述第一时间戳信息中在数据交互中丢失的时间戳信息。
上述方案中,所述响应于所述信息查询请求,基于所述第二时间戳信息,从所述第一时间戳信息中,确定丢失信息并通过所述Graphql服务发送至所述客户端,包括:
基于所述第二时间戳信息,对所述第一时间戳信息进行对比,得到对比结果;
基于所述对比结果,从所述第一时间戳信息中,确定所述丢失信息并通过所述Graphql服务发送至所述客户端。
上述方案中,所述基于所述第二时间戳信息,对所述第一时间戳信息进行对比,得到对比结果,包括:
对第一子时间戳信息和第二子时间戳信息进行对比,直至所述第一时间戳信息中的所有时间戳信息均完成筛选,得到对比结果;其中,所述第一子时间戳信息为所述第一时间戳信息中的任意一个时间戳信息;所述第二子时间戳信息为所述第二时间戳信息中的任意一个时间戳信息。
上述方案中,所述基于所述对比结果,从所述第一时间戳信息中,确定所述丢失信息并通过所述Graphql服务发送至所述客户端,包括:
若所述对比结果为所述第一子时间戳信息与所述第二子时间戳信息不同;则确定所述第一子时间戳信息对应的所述时间戳信息为子丢失信息;
从所述子丢失信息中,确定所述丢失信息。
上述方案中,所述从所述子丢失信息中,确定所述丢失信息,包括:
从所述子丢失信息中,确定值最大的子丢失信息为所述丢失信息。
上述方案中,所述方法还包括:
基于预设周期,从所述第二时间戳信息中,确定参照信息样本;
基于所述参照信息样本,对所述第一时间戳信息进行删除处理。
上述方案中,所述基于预设周期,从所述第二时间戳信息中,确定参照信息样本,包括:
基于所述预设周期,从所述第二时间戳信息中,确定值最大的第二子时间戳信息为所述参照信息样本。
上述方案中,所述基于所述参照信息样本,对所述第一时间戳信息进行删除处理,包括:
基于所述参照信息样本,对第一子时间戳信息进行对比,得到第一对比结果;
若所述第一对比结果为所述第一子时间戳信息小于所述参照信息样本,则对所述第一子时间戳信息对应的所述时间戳信息进行删除处理。
上述方案中,所述方法还包括:
通过所述Graphql服务接收订阅请求;所述订阅请求携带有所述第二时间戳信息或所述丢失信息;
响应于所述订阅请求,根据所述第二时间戳信息或所述丢失信息,在数据库中确定订阅信息并通过所述Graphql服务发送至客户端;其中,所述订阅信息表征所述数据库中在所述第二时间戳信息或所述丢失信息对应的时刻涉及字段变动的主题。
本发明实施例提供一种web实时消息推送方法,所述方法应用于客户端,所述客户端设置有Graphql API(应用程序接口),包括:
通过所述Graphql API发送修改标识获取请求至服务器;所述修改标识请求携带有修改信息,所述客户端通过所述Graphql API与所述服务器的Graphql服务实现数据交互
通过所述Graphql API接收所述服务器响应于所述修改标识获取请求发送的第二时间戳信息;其中,所述第二时间戳信息为第一时间戳信息中所述客户端接收到的时间戳信息;所述第一时间戳信息为所述服务器发送的时间戳信息;
通过所述Graphql API发送所述信息查询请求至所述服务器;所述信息查询请求携带有所述第二时间戳信息;
通过所述Graphql API接收所述服务器响应于所述信息查询请求发送的丢失信息;其中,所述丢失信息为所述第一时间戳信息中在数据交互中丢失的时间戳信息。
上述方案中,所述方法还包括:
通过所述Graphql API发送订阅请求至所述服务器;其中,所述订阅请求携带有所述第二时间戳信息或所述丢失信息;
通过所述Graphql API接收所述服务器响应于所述订阅请求发送的订阅信息;其中,所述订阅信息表征数据库中所述第二时间戳信息或所述丢失信息对应的时刻涉及字段变动的主题。
本发明实施例提供一种web实时消息推送装置,包括第一接收单元、确定单元和第一发送单元;其中,
所述第一接收单元,用于通过Graphql服务接收修改标识获取请求;所述修改标识获取请求携带有修改信息;通过所述Graphql服务和kafka服务接收信息查询请求;所述信息查询请求携带有第二时间戳信息;
所述确定单元,用于响应于所述修改标识获取请求,根据所述修改信息,确定所述修改信息对应的第一时间戳信息;响应于所述信息查询请求,基于所述第二时间戳信息,从所述第一时间戳信息中,确定丢失信息;
所述第一发送单元,用于通过所述Graphql服务发送所述第一时间戳信息至客户端;用于通过所述Graphql服务发送所述丢失信息至所述客户端。
上述方案中,所述确定单元,还用于基于所述第二时间戳信息,对所述第一时间戳信息进行对比,得到对比结果;基于所述对比结果,从所述第一时间戳信息中,确定所述丢失信息并通过所述Graphql服务发送至所述客户端。
上述方案中,所述确定单元,还用于对第一子时间戳信息和第二子时间戳信息进行对比,直至所述第一时间戳信息均完成筛选,得到对比结果;其中,所述第一子时间戳信息为所述第一时间戳信息中的任意一个时间戳信息;所述第二子时间戳信息为所述第二时间戳信息中的任意一个时间戳信息。
上述方案中,所述确定单元,还用于若所述对比结果为所述第一子时间戳信息与所述第二子时间戳信息不同;则确定所述第一子时间戳信息对应的所述时间戳信息为子丢失信息;从所述子丢失信息中,确定所述丢失信息。
上述方案中,所述确定单元,还用于从所述子丢失信息中,确定值最大的子丢失信息为所述丢失信息。
上述方案中,所述装置中还包括处理单元,其中:
所述确定单元,还用于基于预设周期,从所述第二时间戳信息中,确定参照信息样本;
所述处理单元,用于基于所述参照信息样本,对所述第一时间戳信息进行删除处理。
上述方案中,所述确定单元,还用于基于所述预设周期,从所述第二时间戳信息中,确定值最大的第二子时间戳信息为所述参照信息样本。
上述方案中,所述处理单元,还用于基于所述参照信息样本,对第一子时间戳信息进行对比,得到第一对比结果;若所述第一对比结果为所述第一子时间戳信息小于所述参照信息样本,则对所述第一子时间戳信息对应的所述时间戳信息进行删除处理。
上述方案中,所述第一接收单元,还用于通过所述Graphql服务接收订阅请求;所述订阅请求携带有所述第二时间戳信息或所述丢失信息;
所述确定单元,还用于响应于所述订阅请求,根据所述第二时间戳信息或所述丢失信息,在数据库中确定订阅信息;其中,所述订阅信息表征所述数据库中在所述第二时间戳信息或所述丢失信息对应的时刻涉及字段变动的主题;
所述第一发送单元,还用于通过所述Graphql服务发送所述订阅信息至客户端。
本发明实施例提供一种web实时消息推送装置,包括第二接收单元和第二发送单元;其中,
所述第二接收单元,用于通过Graphql API接收服务器响应于修改标识获取请求发送的第二时间戳信息;通过所述Graphql API接收所述服务器响应于信息查询请求发送的丢失信息;
所述第二发送单元,用于通过所述Graphql API发送修改标识获取请求至服务器;所述修改标识请求携带有修改信息;通过所述Graphql API发送所述信息查询请求至所述服务器;所述信息查询请求携带有所述第二时间戳信息。
上述方案中,所述第二接收单元,还用于通过所述Graphql API接收所述服务器响应于所述订阅请求发送的订阅信息;其中,所述订阅信息表征数据库中所述第二时间戳信息或所述丢失信息对应的时刻涉及字段变动的主题;
所述第二发送单元,还用于通过所述Graphql API发送订阅请求至所述服务器;其中,所述订阅请求携带有所述第二时间戳信息或所述丢失信息。
本发明实施例提供一种服务器,所述服务器包括:
第一存储器,用于存储可执行指令;
第一通信总线,用于实现所述第一存储器与第一处理器的通信;
所述第一处理器,用于执行所述第一存储器中存储的可执行指令,以实现如本发明实施例所述的应用于服务器的web实时消息推送方法。
本发明实施例提供一种客户端,所述客户端包括:
第二存储器,用于存储可执行指令;
第二通信总线,用于实现所述第二存储器与第二处理器的通信;
所述第二处理器,用于执行所述第二存储器中存储的可执行指令,以实现如本发明实施例所述的应用于客户端的web实时消息推送方法。
本发明实施例提供一种存储介质,所述存储介质存储有可执行指令,当所述可执行指令被执行时,用于引起第一处理器执行如本发明实施例所述的应用于服务器的web实时消息推送方法。
本发明实施例提供一种存储介质,所述存储介质存储有可执行指令,当所述可执行指令被执行时,用于引起第二处理器执行如本发明实施例所述的应用于服务器的web实时消息推送方法。
本发明实施例提供了一种web实时消息推送方法及装置、设备、存储介质;方法包括服务器基于Graphql服务和kafka服务,根据数据库中发生的修改操作的时间,生成第一时间戳消息并发送至客户端,客户端将接收到第二时间戳信息,第二时间戳信息为第一时间戳信息中客户端接收到的时间戳信息。对第一时间戳信息和第二时间戳信息进行对比,从而得到丢失信息,通过即可确定服务器与客户端在交互过程中是否有数据丢失。将丢失信息发送至客户端,使得客户端通过丢失信息重新获取对应的订阅信息。
本发明实施例能够在实现web消息的实时推送的基础上,通过比较客户端接收到的数据和服务器发送的数据差异,确定客户端和服务器在数据交互中是否存在数据丢失,若存在数据丢失,则确定丢失信息,并重新发送丢失信息;以提高数据发送的成功率,降低数据丢失的风险。
附图说明
图1为本发明实施例提供的一种应用于服务器的web实时消息推送方法的流程图一;
图2为本发明实施例提供的一种应用于服务器的web实时消息推送方法的流程图二;
图3为本发明实施例提供的一种应用于服务器的web实时消息推送方法的流程图三;
图4为本发明实施例提供的一种应用于客户端的web实时消息推送方法的流程图一;
图5为本发明实施例提供的一种应用于客户端的web实时消息推送方法的流程图二;
图6为本发明实施例提供的一种web实时消息推送方法的流程图一;
图7为本发明实施例提供的一种web实时消息推送方法的流程图二;
图8为本发明实施例提供的一种web实时消息推送方法的流程图三;
图9为本发明实施例提供的一种web实时消息推送装置的功能架构图;
图10为本发明实施例提供的另一种web实时消息推送装置的功能架构图;
图11为本发明实施例提供的一种服务器的功能架构图;
图12为本发明实施例提供的一种客户端的功能架构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
图1是本发明实施例提供的一种应用于服务器的web实时消息推送方法的流程图一,如图1所示,本发明实施例提供一种web实时消息推送方法,该方法应用于服务器,服务器设置有Graphql服务和kafka服务,包括:
S101、通过Graphql服务接收修改标识获取请求;修改标识获取请求携带有修改信息。
本发明实施例中,适用于数据库中的字段发生修改时,服务器将数据中涉及字段变动的主题信息发送至客户端的场景。
本发明实施例中,服务器通过Graphql服务接收客户端发送的修改标识获取请求,其中,修改标识获取请求携带有修改信息。
本发明实施例中,修改信息为用户在页面上做了修改或服务器自己触发,从而对数据库进行了修改操作的字段;修改标识获取请求用于请求服务器提供数据库中被修改的字段的标识信息。其中,服务器根据标识信息确定数据库中被修改的字段,并发送相关信息至客户端。
本发明实施例中,服务器能够通过Graphql服务对同一场景提供不同数据以满足客户端应用展示的需要;在实际使用中,通过Graphql服务定义服务器可以为客户端提供哪些订阅,即在服务器的schema文件中添加一个根类型,上述根类型为:Subscription;其中,Subscription与Query以及Mutation处于同一级别。根类型Subscription中包含messageAdded方法定义,表示客户端可以订阅的主题,当上述主题的字段发生了修改时,服务器通知客户端。
本发明实施例中,服务器应该周期性或实时检测与客户端的连接情况,若服务器检测到因为网络原因,导致服务器和客户端之间断开连接,则需要尝试进行重连,尝试进行重连的次数根据实际需要设定,示例性的,可以设置最大重连次数为3次。
可以理解的是,服务器根据接收到的修改标识获取请求和修改信息,为客户端提供修改信息的标识,便于后续服务器根据客户端的需要推送消息。
S102、响应于修改标识获取请求,根据修改信息,确定并通过Graphql服务发送修改信息对应的第一时间戳信息至客户端。
本发明实施例中,适用于接收到修改标识获取请求后,确定数据库中发生变动的字段的时间戳并发送至客户端。
本发明实施例中,服务器接收到客户端发送的修改标识获取请求和修改信息后,响应于修改标识获取请求,根据修改信息,确定修改信息对应的第一时间戳信息,并将上述第一时间戳信息通过Graphql服务发送至客户端。
本发明实施例中,修改信息中包括至少一条信息,第一时间戳信息包括至少一个时间戳信息;其中,至少一条信息中的每条信息均对应至少一个时间戳信息中的一个时间戳信息。
本发明实施例中,时间戳信息对应数据库中字段被修改的时间,其中,时间戳信息精确到毫秒。
可以理解的是,服务器通过时间戳信息确定数据库中发生变动的字段,可以根据需要,确定需要时间段之内产生变动的字段,再将产生变动的字段的主题发送至客户端,提高确定并发送消息的效率,且保证确定的产生变动字段的主题的准确率。
S103、通过Graphql服务和kafka服务接收信息查询请求;信息查询请求携带有第二时间戳信息。其中,第二时间戳信息为客户端接收到的时间戳信息。
本发明实施例中,适用于获取发送的第一时间戳信息的接收情况的场景。
本发明实施例中,服务器通过Graphql服务接收信息查询请求和信息查询请求携带的第二时间戳信息,通过kafka服务对第二时间戳信息进行处理。第二时间戳信息为客户端接收到的时间戳信息。
本发明实施例中,第二时间戳信息为服务器发送的第一时间戳信息中被客户端成功接收到的时间戳信息。第二时间戳信息中的时间戳信息数量应该小于或等于第一时间戳信息中的时间戳数量,且第二时间戳信息中的时间戳信息与第一时间戳信息中的时间戳信息之间存在相同的时间戳信息。
在本发明实施例中,信息查询请求用于请求服务器查询第一时间戳信息在发送至客户端的过程中是否存在丢失情况,并将丢失的时间戳信息重新发送至客户端。
可以理解的是,服务器通过第二时间戳信息,与第一时间戳信息进行对比即可得知在于客户端数据交互的过程中是否存在数据丢失,便于根据数据丢失进行后续处理,降低数据丢失的风险。
S104、响应于信息查询请求,基于第二时间戳信息,从第一时间戳信息中,确定丢失信息并通过Graphql服务发送至客户端;其中,丢失信息为第一时间戳信息中在数据交互中丢失的时间戳信息。
本发明实施例中,适用于服务器确定与客户端数据交互的过程中丢失的数据(丢失信息),并将丢失的数据发送至客户端,从而减少数据丢失的风险的场景。
本发明实施例中,服务器接收到信息查询请求后,响应于信息查询请求,基于第二时间戳信息,在第一时间戳信息中确定丢失信息,丢失信息为第一时间戳信息在服务器与客户端之间的数据交互中丢失的时间戳信息。将丢失信息发送至客户端。
本发明实施例中,服务器内设置kafka服务,以引入kafka消息队列。在实际使用中,将第一时间戳信息和第二时间戳信息分别保存在不同的变量(kafka消息队列)中,变量可以是TreeSet类;TreeSet类是Set的子类;TreeSet类可以确保保存在TreeSet类中的时间戳信息均处于排序状态,即可以对保存至TreeSet类中的时间戳信息自动排序。在实际使用中,服务器可以生成两个第一时间戳信息并通过kafka服务保存至变量中。示例性的,记第一时间戳信息为id1、id2,id3,id4,id5,id6和id7;第二时间戳信息为id1、id2,id3。将两个第一时间戳信息和第二时间戳信息分别保存在不同的TreeSet类中,并分别记为topic1、topic2和topic3,两个第一时间戳信息分别保存于topic1和topic2中,即topic1中的时间戳信息集合记为Set1=(id1,id2,id3,id4,id5,id6,id7),topic2中的时间戳信息集合记为Set2=(id1,id2,id3,id4,id5,id6,id7);第二时间戳信息保存于topic3中,即topic3中的时间戳信息集合记为Set3=(id1,id2,id3)。其中,服务器从Set1中获取时间戳信息并发送至客户端。
本发明实施例中,由于排序方式为按照时间戳信息的值由小至大进行排序,因此,topic1和topic2中,第一时间戳信息排序为id1<id2<id3<id4<id5<id6<id7,topic3中,第二时间戳信息排序为id1<id2<id3。由于,时间戳信息的值越大,则表示修改的字段的时间戳距离当前时间越近,因此第一时间戳信息中id7为最接近当前时间的时间戳信息。
本发明实施例中,在确定丢失信息后,服务器可以将丢失信息分别保存至topic1和topic3中。
本发明实施例中,服务器内可以设置有定时器,定时器用于周期性的执行预设任务;其中,预设任务可以为对比函数,对比函数用于对第一时间戳信息和第二时间戳信息进行对比,以确定在数据交互过程中丢失的时间戳信息,且定时器可以基于setInterval创建。示例性的,由于第一时间戳信息为id1、id2,id3,id4,id5,id6和id7;第二时间戳信息为id1、id2,id3。因此,通过定时器对第一时间戳信息和第二时间戳信息进行对比,可以确定id4,id5,id6和id7在数据交互过程中丢失。可以将所有在数据交互过程中丢失的时间戳信息通过kafka服务保存至Set1和Set3,并发送至客户端,也可以仅发送在数据交互过程中丢失的时间戳信息中的一部分时间戳信息。在实际使用中,因为用户只关心最新的数据,中间过程因数据丢失而没有接收到数据,对用户来说是无感知的,所以在数据交互过程中丢失的时间戳信息中确定值最大的时间戳信息作为丢失信息发送至客户端即可,即在id4,id5,id6和id7中,确定id7为丢失信息。
可以理解的是,服务器根据第一时间戳信息和第二时间戳信息获取丢失信息,并将丢失信息发送至客户端,从而保证数据发送的成功率,减少数据丢失的风险。
在本发明的一些实施例中,S104还可以包括S1041和S1042,如下:
S1041、基于第二时间戳信息,对第一时间戳信息进行对比,得到对比结果。
在本发明的一些实施例中,适用于基于第二时间戳信息确定丢失信息的场景。
在本发明的一些实施例中,服务器以第二时间戳信息为参照,对第一时间戳信息和第二时间戳信息进行对比,并得到对比结果。
在本发明的一些实施例中,服务器对第一时间戳信息和第二时间戳信息中的时间戳信息是否相同进行对比,并得到对比结果。
在本发明的一些实施例中,服务器通过kafka服务和对第一子时间戳信息和第二子时间戳信息进行对比,直至第一时间戳信息均完成筛选,得到对比结果。其中,第一子时间戳信息为第一时间戳信息中的任意一个时间戳信息;第二子时间戳信息为第二时间戳信息中的任意一个时间戳信息。
在本发明的一些实施例中,在第一时间戳信息中取任意一个时间戳信息作为第一子时间戳信息,在第二时间戳信息中取任意一个时间戳信息作为第二子时间戳信息,对第一子时间戳信息和第二子时间戳信息进行对比,直至第一时间戳信息中的所有时间戳信息均完成筛选,得到对比结果。
可以理解的是,通过对比第一时间戳信息和第二时间戳信息,可以获取到数据交互过程中丢失的时间戳信息。
S1042、基于对比结果,从第一时间戳信息中,确定丢失信息并通过Graphql服务发送至客户端。
在本发明的一些实施例中,适用于根据对比结果确定丢失信息的场景。
在本发明的一些实施例中,服务器基于S1041得到的对比结果,从第一时间戳信息中确定丢失信息并通过Graphql服务发送至客户端。
在本发明的一些实施例中,对比结果可以包括多个子对比结果,每个子对比结果均对应一个时间戳信息,根据多个子对比结果,可以确定至少一个在数据交互中丢失的时间戳信息。
可以理解的是,基于对比结果,确定数据交互过程中丢失的时间戳信息,将丢失的时间戳信息重新发送至客户端,从而保证信息发送的成功率。
在本发明的一些实施例中,S1042可以包括S10421和S10422,如下:
S10421、若对比结果为第一子时间戳信息与第二子时间戳信息不同;则确定第一子时间戳信息对应的时间戳信息为子丢失信息。
在本发明的一些实施例中,适用于确定在数据交互过程中丢失的时间戳信息的场景。
在本发明的一些实施例中,若对比结果为第一子时间戳信息与第二子时间戳信息不同,则服务器确定第一子时间戳信息对应的时间戳信息为子丢失信息。
在本发明的一些实施例中,根据对比结果,可以确定至少一个在数据交互中丢失的时间戳信息;丢失信息包括至少一个子丢失信息,至少一个子丢失信息中的每个子丢失信息均与至少一个在数据交互中丢失的时间戳信息中的每个时间戳信息对应。
在本发明的一些实施例中,若对比结果为第一子时间戳信息与第二子时间戳信息相同,则服务器确定第一子时间戳信息对应的时间戳信息不是子丢失信息。此时,将上述第一子时间戳信息对应的时间戳信息删除。
可以理解的是,根据对比结果确定子丢失信息,根据子丢失信息确定丢失信息,可以减少发送至客户端的时间戳信息的数量,减少传输成本。
S10422、从子丢失信息中,确定丢失信息。
在本发明的一些实施例中,适用于确定了子丢失信息后,确定丢失信息的场景。
在本发明的一些实施例中,服务器从子丢失信息中,确定时间值最大的子丢失信息为丢失信息。
在本发明的一些实施例中,确定时间值最大的子丢失信息为丢失信息后,将丢失信息发送至客户端。
可以理解的是,服务器确定丢失信息后发送至客户端,可以保证数据发送的成功率,减少数据丢失的风险。
基于图1,图2是本发明实施例提供的一种应用于服务器的web实时消息推送方法的流程图二,如图2所示,方案还包括:
S105、基于预设周期,从第一时间戳信息中,确定参照信息样本。
本发明实施例中,适用于从第一时间戳信息中,确定一个时间戳信息作为参照信息样本的场景。
本发明实施例中,服务器周期性的从第一时间戳信息中,确定一个时间戳信息作为参照信息样本。
本发明实施例中,按照预设周期,从第二时间戳信息中获取周期内的所有时间戳信息,确定值最大的时间戳信息作为参照信息样本,也可以确定值最小的时间戳信息作为参照信息样本,本发明实施例不做限定示例性的,取保存有第一时间戳信息的topic2中1分钟前的所有时间戳信息记为Set2'=(id5,id6,id7),则最大的时间戳信息id7为参照信息。
本发明实施例中,如果第一时间戳信息中预设周期内没有时间戳信息,则服务器不需要任何操作。
可以理解的是,这样周期性的对不需要的第一时间戳信息和第二时间戳信息进行删除,可以减少数据冗余,且可以减少对比第一时间戳信息和第二时间戳信息以确定丢失信息的工作量,提高工作效率。
在本发明的一些实施例中,基于预设周期,从第一时间戳信息中,确定值最大的第一子时间戳信息为参照信息样本。其中,第一子时间戳信息为第一时间戳信息中的任意一个时间戳信息。
在本发明的一些实施例中,由于不需要考虑用户是否未接收到第一时间戳信息中值最大的时间戳信息之前的时间戳信息,因此,以第一时间戳信息中值最大的时间戳信为参照信息样本。
S106、基于参照信息样本,对第一时间戳信息和第二时间戳信息进行删除处理。
本发明实施例中,适用于对第一时间戳信息和第二时间戳信息进行处理的场景。
本发明实施例中,基于S105确定的参照信息样本,服务器对第一时间戳信息和第二时间戳信息中符合预设要求的时间戳信息进行删除处理。
本发明实施例中,预设要求可以为值小于参照信息样本。示例性的,从Set2=(id1,id2,id3,id4,id5,id6,id7)和Set3=(id1,id2,id3)中确定出值最大的时间戳信息作为参照信息样本,即为id7;其中,id7表示1分钟前服务器发送至客户端的时间戳信息中值最大的时间戳信息,将Set2=(id1,id2,id3,id4,id5,id6,id7)和Set3=(id1,id2,id3)中值小于id7的时间戳信息全部删除。删除后,得到Set2=(id7),Set3为空集。
可以理解的是,这样对第一时间戳信息和第二时间戳信息进行删除,可以减少数据冗余,提高工作效率。
在本发明的一些实施例中,S106可以包括S1061和S1062,如下:
S1061、基于参照信息样本,对第一子时间戳信息和第二子时间戳信息进行对比,得到第一对比结果。
在本发明的一些实施例中,适用于确定第一时间戳信息和第二时间戳信息中需要被删除处理的时间戳信息的场景。
在本发明的一些实施例中,服务器基于参照信息样本,对第一子时间戳信息和第二子时间戳信息进行对比,得到第一对比结果。
可以理解的是,这样可以准确的确定出第一子时间戳信息和第二子时间戳信息中需要被删除处理的时间戳信息。
S1062、若第一对比结果为第一子时间戳信息小于参照信息样本,则对第一子时间戳信息对应的时间戳信息进行删除处理。
在本发明的一些实施例中,适用于对第一时间戳信息和第二时间戳信息中不需要的时间戳信息进行删除处理的场景。
在本发明的一些实施例中,若第一对比结果为第一子时间戳信息或第二时间戳信息小于参照信息样本,则服务器对第一子时间戳信息或第二时间戳信息对应的时间戳信息进行删除处理。
在本发明的一些实施例中,若一个时间戳信息小于参照信息样本,则意味着上述时间戳信息不需要发送至客户端以告知用户,因此,对上述时间戳信息删除处理。
可以理解的是,可以减少数据冗余,提高工作效率。
基于图1,图3是本发明实施例提供的一种应用于服务器的web实时消息推送方法的流程图三,如图3所示,方案还包括:
S107、通过Graphql服务接收订阅请求;订阅请求携带有第二时间戳信息或丢失信息。
本发明实施例中,适用于服务器为客户端推送消息的场景。
本发明实施例中,服务器通过Graphql服务接收客户端发送的订阅请求和订阅请求携带的第二时间戳信息或丢失信息。
本发明实施例中,订阅请求用于从服务器请求推送订阅的消息。
本发明实施例中,服务器包括订阅解析器,上述订阅解析器可以使用发布的事件来解析客户端发送的订阅请求,在订阅解析器中设置嵌套对象,通过订阅解析器将发送响应于订阅请求生成的订阅信息到客户端。
可以理解的是,服务器根据订阅请求,响应客户端的请求,使客户端满足用户的需求。
S108、响应于订阅请求,根据第二时间戳信息或丢失信息,在数据库中确定订阅信息并通过Graphql服务发送至客户端;其中,订阅信息表征数据库中在第二时间戳信息或丢失信息对应的时刻涉及字段变动的主题。
本发明实施例中,适用于为客户端提供订阅信息的场景。
本发明实施例中,服务器根据第二时间戳信息或丢失信息,在数据库中确定订阅信息并通过Graphql服务发送至客户端,其中,订阅信息为订阅请求的响应结果,订阅信息表征数据库中在第二时间戳信息或丢失信息对应的时刻涉及字段变动的主题。
可以理解的是,服务器发送订阅信息至客户端,使得客户端能实时展示最新的数据,满足用户需求。
图4是本发明实施例提供的一种应用于客户端的web实时消息推送方法的流程图一,如图4所示,本发明实施例提供的一种web实时消息推送方法,方法应用于客户端,客户端设置有Graphql API(Application Programming Interface,应用程序接口);包括:
S201、通过Graphql API发送修改标识获取请求至服务器;修改标识请求携带有修改信息,客户端通过Graphql API与服务器的Graphql服务实现数据交互。
本发明实施例中,适用于请求推送数据库中涉及字段变动的主题信息的场景。
本发明实施例中,客户端通过Graphql API发送修改标识获取请求至服务器,并通过修改标识获取请求携带修改信息,以请求获取与修改信息对应的数据库中涉及字段变动的主体信息。
本发明实施例中,客户端在发送修改标识获取请求之前,需要先在客户端创建用于订阅S101中添加的subscription根类型的实例用作网络接口,即用作Graphql API;通过上述Graphql API使得客户端可以通过HTTP执行普通的Graphql查询和通过WebSockets的订阅查询,即客户端可以通过上述Graphql API实现与服务器的Graphql服务的数据交互。并在客户端创建可以观察到的执行操作,上述执行操作包含客户端将连接到的服务器的subscription根类型的请求接口定义和请求参数值。
可以理解的是,客户端通过Graphql API发送和接收需要实时推送的消息的时间戳信息,有利于解耦服务器端的数据处理过程,提高了访问压力承受强度,使得客户端不会因为突发的超负荷的请求而崩溃。
S202、通过Graphql API接收服务器响应于修改标识获取请求发送的第二时间戳信息;其中,第二时间戳信息为第一时间戳信息中客户端接收到的时间戳信息;第一时间戳信息为服务器发送的时间戳信息。
本发明实施例中,适用于接收服务器发送的第二时间戳消息的场景。
本发明实施例中,客户端通过Graphql API接收服务器响应于修改标识获取请求发送的第二时间戳信息;第一时间戳信息为服务器发出的时间戳信息,由于,第一时间戳信息在数据交互的过程中会存在时间戳信息丢失的情况,因此,将第一时间戳信息中客户端接收到的时间戳信息记为第二时间戳信息。
可以理解的是,客户端可以保证第二时间戳信息的有序性,从而保证客户端后续根据第二时间戳信息获取到的订阅信息的时效性。
S203、通过Graphql API发送信息查询请求至服务器;信息查询请求携带有第二时间戳信息。
本发明实施例中,适用于客户端查询是否在于服务器进行数据交互时,丢失了数据的场景。
本发明实施例中,客户端通过Graphql API,将第二时间戳信息和信息查询请求一起发送至服务器。
本发明实施例中,信息查询请求用于请求服务器根据第二时间戳信息,从第一时间戳信息中确定是否存在客户端未接收到的时间戳信息。
本发明实施例中,若存在客户端未接收到的时间戳信息,则信息查询请求还用于请求服务器将客户端未接收到的时间戳信息发送至客户端。在实际使用中,信息查询请求还可以用于请求服务器将客户端为接收到的时间戳信息中值最大的时间戳信息发送至客户端。
可以理解的是,通过信息查询请求,可以确定客户端与服务器在数据交互过程中是否存在数据丢失的情况。
S204、通过Graphql API接收服务器响应于信息查询请求发送的丢失信息;其中,丢失信息为第一时间戳信息中在数据交互中丢失的时间戳信息。
本发明实施例中,适用于客户端获取在与服务器进行数据交互过程中丢失的时间戳信息的场景。
本发明实施例中,客户端接收服务器响应于信息查询请求发送的丢失信息,丢失信息为第一时间戳信息中在数据交互中丢失的时间戳信息。
可以理解的是,客户端接收到丢失信息后,可以根据丢失信息获取丢失信息对应的数据库中设计字段变动的主题信息,并展示至用户;这样可以保证数据发送的成功率,减少数据丢失的风险,保证用户接收到的订阅信息的完整性。
基于图4,图5是本发明实施例提供的一种应用于客户端的web实时消息推送方法的流程图二,如图5所示,在本发明的一些实施例提供的一种web实时消息推送方法,还包括:
S205、通过Graphql API发送订阅请求至服务器。其中,订阅请求携带有第二时间戳信息或丢失信息。
本发明实施例中,适用于客户端向服务器请求推送用户通过客户端订阅的订阅信息的场景。
本发明实施例中,客户端通过Graphql API发送订阅请求至服务器,客户端发送订阅请求时,订阅请求携带有第二时间戳信息或丢失信息。
本发明实施例中,订阅请求携带第二时间戳信息还是丢失信息,根据第二时间戳信息和丢失信息中时间戳信息的值确定。确定第二时间戳信息和丢失信息中值最大的时间戳信息,订阅请求携带上述值最大的时间戳信息至服务器。
可以理解的是,客户端可以请求服务器发送与当前时间最接近的订阅消息,且可以减少因为时间戳信息丢失,而导致订阅消息丢失的概率。
S206、通过Graphql API接收服务器响应于订阅请求发送的订阅信息。其中,订阅信息表征数据库中第二时间戳信息或丢失信息对应的时刻涉及字段变动的主题。
本发明实施例中,适用于客户端接收订阅信息的场景。
本发明实施例中,客户端通过Graphql API接收服务器响应于订阅请求发送的订阅信息,订阅信息表征数据库中第二时间戳信息或丢失信息对应的时刻涉及字段变动的主题。
本发明实施例中,订阅信息为客户端订阅的数据库中在第二时间戳信息或丢失信息对应的时刻产生了字段变动的主题信息。
可以理解的是,客户端根据第二时间戳信息或丢失信息请求订阅信息,可以保证订阅信息的接收成功率,提高用户体验度。
图6是本发明实施例提供的一种web实时消息推送方法的流程图一,如图6所示,本发明的一些实施例提供的web实时消息推送方法,包括:
S301、客户端发送修改标识获取请求和修改信息至服务器。
S302、服务器响应于修改标识获取请求,根据修改信息,确定修改信息对应的第一时间戳信息。
S303、服务器发送第一时间戳信息至客户端。
S304、客户端发送信息查询请求和第二时间戳信息至服务器,其中,第二时间戳信息为第一时间戳信息中客户端接收到的时间戳信息。
S305、服务器响应于信息查询请求,基于第二时间戳信息,从第一时间戳信息中,确定丢失信息。
S306、服务器发送丢失信息至客户端。
S307、客户端发送订阅请求,以及第二时间戳信息或丢失信息至服务器。
S308、服务器响应于订阅请求,根据第二时间戳信息或丢失信息,在数据库中确定订阅信息。
S309、服务器发送订阅信息至客户端。
可以理解的是,本发明实施例中,可以确定服务器与客户端在数据交互过程中是否存在数据丢失,且可以确定丢失信息并重新发送丢失信息,可以保证数据发送的成功率,减少数据丢失的风险,保证用户接收到的订阅信息的完整性。
图7是本发明实施例提供的一种web实时消息推送方法的流程图二,如图7所示,本发明的一些实施例提供的一种web实时消息推送方法,包括:
S401、在服务器设置Graphql订阅和订阅解析器。
在本发明的一些实施例中,通过在服务器设置Graphql订阅和订阅解析器完成Graphql服务的设置;其中,Graphql订阅用于定义客户端可以请求的订阅类型,可以订阅解析器是通过定义过滤函数来节省资源,指定事件是否应通过给定事件数据和查询变量的过滤器。
S402、客户端创建订阅subscription的实例和请求接口定义。
在本发明的一些实施例中,通过创建订阅subscription的实例和请求接口定义完成Graphql API的设置,实现客户端与服务器之间的数据交互。
S403、用户或服务器触发数据变化。
在本发明的一些实施例中,当用户在页面上做了修改,或者服务器自己触发对数据库进行了修改操作,将生成修改信息。
S404、kafka的producer(消费生产者)端发送编号id1(第二时间戳信息)至topic1。
在本发明的一些实施例中,服务器根据S403生成的修改信息,将上述修改信息进行编号并发送至客户端。
在本发明的一些实施例中,基于设置在服务器的kafka服务,服务器在接收到编号id1后,通过kafka的producer端将这个id1发送到topic1中,其中,id是精确到ms的时间戳,对应数据库中字段被修改的时间。
S405、kafka的consumer(消息消费者)端从topic1中消费id1。
在本发明的一些实施例中,服务器基于kafka服务,通过kafka的consumer端将id1发送至服务器,consumer端发送id1时,还会生成订阅请求一起发送至服务器,以请求服务器根据id1提供订阅的数据。
S406、服务器查询数据库,将涉及到字段变动的主题进行消息发布;kafka的producer端发送编号id1到topic2。
在本发明的一些实施例中,服务器接收到这个消息id1后,立即查询数据库,将id1对应的涉及到字段变动的主题进行消息发布。
在本发明的一些实施例中,服务器基于kafka服务,通过kafka的producer端发送编号id1到topic2留作备用,表示服务器发送至客户端的编号。
S407、客户端通过服务器的subscription类型定义,实时接收数据(订阅信息)。
在本发明的一些实施例中,客户端根据服务器的subscription类型定义,接收到的数据为服务器允许提供的主题。
S408、客户端对页面进行重新渲染;客户端将id1通过Graphql的Quary类型请求,发送至服务器。
在本发明的一些实施例中,客户端接收到订阅的数据后,对页面重新渲染,以为用户显示接收到的数据。
在本发明的一些实施例中,服务器中还包括根类型Query和根类型Mutation。其中,根类型Query和根类型Mutation,以及根类型Subscription处于同一级别。客户端通过Graphql API与服务器的Graphql服务进行通信,将id1通过Graphql的Quary类型请求,发送至服务器。
S409、kafka的producer端发送id1至topic3。
在本发明的一些实施例中,服务器基于kafka服务,通过kafka将id1发送至topic3进行保存,表示客户端已接收到并接收到id1对应的数据。
S410、kafka的consumer端比较topic2和topic3中编号的差异,判断是否需要将id1重新发送至topic1中,如果判断结果为需要,则进行S406。
在本发明的一些实施例中,topic2中的编号为服务器发送至客户端的,topic3中的编号为客户端已接收到服务器根据编号进行消息发布时,实时接收的数据;服务器基于kafka服务,通过kafka的consumer端比较topic2和topic3中编号的差异,可以得出客户端未接收到的数据。
在本发明的一些实施例中,如果需要将id1重新发送至topic1中,则进行S406,如果不需要则不作任何操作。
可以理解的是,本发明实施例中服务器采用kafka的数据消费机制来比较客户端接收到的数据(第二时间戳信息)和服务器端发送的数据(第一时间戳信息)差异,找出推送失败的消息(丢失信息)并进行重新发送,可以有效地保证数据发送的成功率,规避了数据丢失的风险;客户端通过Graphql API实现与服务器的Graphql服务的通信(数据交互),支持完全的websocket传输,实现了基于Graphql的实时web应用,同时还具有数据更少的优点,即服务器允许客户端定义需要得到的数据结构,且服务器可以返回所需的数据结构,从而显著的节省网络传输资源,提高响应请求的效率,减少资源浪费。
图8是本发明实施例提供的一种web实时消息推送方法的流程图三,如图8所示,本发明的一些实施例提供的一种web实时消息推送方法,包括:
S501、服务器确定topic3中客户端消费的编号集合Set3=(id1,id2,id3,…)中的最大值,记为idmax(参照信息样本)。
在本发明的一些实施例中,服务器中除了Graphql服务和kafka服务,还可以设置setInterval定时器;其中,setInterval定时器与Graphql服务相互独立,setInterval定时器用于每隔1分钟执行1次处理逻辑如S502-S506所示的比较函数。
在本发明的一些实施例中,topic3中客户端消费的编号集合记为Set3=(id1,id2,id3,…),topic2中客户端消费的编号集合记为Set2=(id1,id2,id3,…)。服务器确定Set3中的idmax。其中,idmax为Set3中,客户端接收到的最大的编号。
S502、服务器删除topic2中客户端消费的编号集合Set2=(id1,id2,id3,…)和topic3中客户端消费的编号集合Set3=(id1,id2,id3,…)中小于idmax的编号。
在本发明的一些实施例中,因为用户只关心最新的编号对应的数据,中间过程因丢失编号或数据而没有接收到的,对客户来说也是无感知的,所以不需要考虑用户是否未接收到id<idmax的编号或编号对应的数据。
S503、服务器取Set2=(id1,id2,id3,…)中1分钟前的编号集合记为Set2′。
在本发明的一些实施例中,Set2′可以是Set2′=(id5,id6,id7,...),用于表示1分钟前客户端未接收到的编号。
S504、服务器判断Set2′是否为空集。
在本发明的一些实施例中,如果Set2′不为空集,则表示1分钟前客户端存在为接收到的编号,即客户端与服务器在数据交互中存在数据丢失。
S505、若Set2′不是空集,从Set2′中取出最大值记为id′max;若Set2′是空集,则服务器停止。
在本发明的一些实施例中,id′max该值表示1分钟前客户端未接收到的数据中最接近当前时间的编号。
S506、服务器发送id′max至客户端,客户端将id′max发送至topic1。
在本发明的一些实施例中,服务器发送id′max至客户端,客户端再将id′max发送至topic1,以重新根据请求服务器发送id′max对应的数据。
可以理解的是,本发明实施例可以减少数据冗余,仅为客户端发送最新的数据,保证数据的实时性。
图9是本发明实施例提供的一种web实时消息推送装置的功能架构图,如图9所示,本发明实施例提供一种web实时消息推送装置9,对应于一种web实时消息推送方法,包括第一接收单元91、确定单元92和第一发送单元93;其中,
所述第一接收单元91,用于通过所述Graphql服务接收修改标识获取请求;所述修改标识获取请求携带有修改信息;通过所述Graphql服务和所述kafka服务接收信息查询请求;所述信息查询请求携带有第二时间戳信息;
所述确定单元92,用于响应于所述修改标识获取请求,根据所述修改信息,确定所述修改信息对应的第一时间戳信息;响应于所述信息查询请求,基于所述第二时间戳信息,从所述第一时间戳信息中,确定丢失信息;
所述第一发送单元93,用于通过所述Graphql服务发送所述第一时间戳信息至所述客户端;用于通过所述Graphql服务发送所述丢失信息至所述客户端。
在本发明的一些实施例中,所述确定单元92,还用于基于所述第二时间戳信息,对所述第一时间戳信息进行对比,得到对比结果;基于所述对比结果,从所述第一时间戳信息中,确定所述丢失信息。
在本发明的一些实施例中,所述确定单元92,还用于对第一子时间戳信息和第二子时间戳信息进行对比,直至所述第一时间戳信息均完成筛选,得到对比结果;其中,所述第一子时间戳信息为所述第一时间戳信息中的任意一个时间戳信息;所述第二子时间戳信息为所述第二时间戳信息中的任意一个时间戳信息。
在本发明的一些实施例中,所述确定单元92,还用于若所述对比结果为所述第一子时间戳信息与所述第二子时间戳信息不同;则确定所述第一子时间戳信息对应的所述时间戳信息为子丢失信息;从所述子丢失信息中,确定所述丢失信息。
在本发明的一些实施例中,所述确定单元92,还用于从所述子丢失信息中,确定值最大的子丢失信息为所述丢失信息。
在本发明的一些实施例中,所述装置中还包括处理单元,其中:
所述确定单元92,还用于基于预设周期,从所述第二时间戳信息中,确定参照信息样本;
所述处理单元94,还用于基于所述参照信息样本,对所述第一时间戳信息进行删除处理。
在本发明的一些实施例中,所述确定单元,还用于基于所述预设周期,从所述第二时间戳信息中,确定值最大的第二子时间戳信息为所述参照信息样本。
在本发明的一些实施例中,所述处理单元94,还用于基于所述参照信息样本,对第一子时间戳信息进行对比,得到第一对比结果;若所述第一对比结果为所述第一子时间戳信息小于所述参照信息样本,则对所述第一子时间戳信息对应的所述时间戳信息进行删除处理。
在本发明的一些实施例中,所述第一接收单元91,还用于通过所述Graphql服务接收订阅请求;所述订阅请求携带有所述第二时间戳信息或所述丢失信息。
所述确定单元92,还用于响应于所述订阅请求,根据所述第二时间戳信息或所述丢失信息,在数据库中确定订阅信息;其中,所述订阅信息表征所述数据库中在所述第二时间戳信息或所述丢失信息对应的时刻涉及字段变动的主题;
所述第一发送单元93,还用于通过所述Graphql服务发送所述订阅信息至客户端。
图10是本发明实施例提供的另一种web实时消息推送装置的功能架构图,如图10所示,本发明实施例提供另一种web实时消息推送装置11,对应于一种web实时消息推送方法,包括第二接收单元111和第二发送单元112;其中,
所述第二接收单元111,用于通过所述Graphql API接收所述服务器响应于所述修改标识获取请求发送的第二时间戳信息;通过所述Graphql API接收所述服务器响应于所述信息查询请求发送的丢失信息;
所述第二发送单元112,用于通过所述Graphql API发送修改标识获取请求至服务器;所述修改标识请求携带有修改信息;通过所述Graphql API发送所述信息查询请求至所述服务器;所述信息查询请求携带有所述第二时间戳信息。
在本发明的一些实施例中,所述第二接收单元111,还用于通过所述Graphql API接收所述服务器响应于所述订阅请求发送的订阅信息;其中,所述订阅信息表征数据库中所述第二时间戳信息或所述丢失信息对应的时刻涉及字段变动的主题;
所述第二发送单元112,还用于通过所述Graphql API发送订阅请求至所述服务器;其中,所述订阅请求携带有所述第二时间戳信息或所述丢失信息。
图11是本发明实施例提供的一种服务器的功能架构图,如图11所示,本发明实施例还提供一种服务器12,并对应于一种应用于服务器的web实时消息推送方法,包括第一处理器121、第一存储器122以及第一通信总线124,第一存储器122通过第一通信总线124与第一处理器121进行通信,第一存储器122存储所述第一处理器121可执行的一个或者多个程序,当所述一个或者多个程序被执行时,所述第一处理器121执行如本发明实施例的web实时消息推送方法,具体的,服务器12还包括用于进行数据传输的第一通信组件123,其中,第一处理器121至少设有一个。
本发明实施例中,服务器12中的各个组件通过总线124耦合在一起。可理解,通过总线124用于实现这些组件之间的连接通信。通过总线124除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图11中将各种总线都标为通过总线124。
图12是本发明实施例提供的一种客户端的功能架构图,如图12所示,本发明实施例还提供一种客户端13,并对应于一种应用于客户端的web实时消息推送方法,包括第二处理器131、第二存储器132以及第二通信总线134,第二存储器132通过第二通信总线134与第二处理器131进行通信,第二存储器132存储所述第二处理器131可执行的一个或者多个程序,当所述一个或者多个程序被执行时,所述第二处理器131执行如本发明实施例的web实时消息推送方法,具体的,客户端13还包括用于进行数据传输的第二通信组件133,其中,第二处理器131至少设有一个。
本发明实施例中,客户端13中的各个组件通过总线134耦合在一起。可理解,通过总线134用于实现这些组件之间的连接通信。通过总线134除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图12中将各种总线都标为通过总线134。
本发明实施例提供一种存储介质,所述存储介质存储有可执行指令,当所述可执行指令被执行时,用于引起第一处理器执行如本发明实施例所述的应用于服务器的web实时消息推送方法
本发明实施例提供一种存储介质,所述存储介质存储有可执行指令,当所述可执行指令被执行时,用于引起第二处理器执行如本发明实施例所述的应用于客户端的web实时消息推送方法。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

Claims (16)

1.一种web实时消息推送方法,其特征在于,所述方法应用于服务器,所述服务器设置有Graphql服务和kafka服务,所述方法包括:
通过所述Graphql服务接收修改标识获取请求;所述修改标识获取请求携带有修改信息;
响应于所述修改标识获取请求,根据所述修改信息,确定并通过所述Graphql服务发送所述修改信息对应的第一时间戳信息至客户端;
通过所述Graphql服务和所述kafka服务接收信息查询请求;所述信息查询请求携带有第二时间戳信息;其中,所述第二时间戳信息为所述客户端接收到的时间戳信息;
响应于所述信息查询请求,基于所述第二时间戳信息,从所述第一时间戳信息中,确定丢失信息并通过所述Graphql服务发送至所述客户端;其中,所述丢失信息为所述第一时间戳信息中在数据交互中丢失的时间戳信息。
2.根据权利要求1所述的方法,其特征在于,所述响应于所述信息查询请求,基于所述第二时间戳信息,从所述第一时间戳信息中,确定丢失信息并通过所述Graphql服务发送至所述客户端,包括:
基于所述第二时间戳信息,对所述第一时间戳信息进行对比,得到对比结果;
基于所述对比结果,从所述第一时间戳信息中,确定所述丢失信息并通过所述Graphql服务发送至所述客户端。
3.根据权利要求2所述的方法,其特征在于,所述基于所述第二时间戳信息,对所述第一时间戳信息进行对比,得到对比结果,包括:
对第一子时间戳信息和第二子时间戳信息进行对比,直至所述第一时间戳信息中的所有时间戳信息均完成筛选,得到对比结果;其中,所述第一子时间戳信息为所述第一时间戳信息中的任意一个时间戳信息;所述第二子时间戳信息为所述第二时间戳信息中的任意一个时间戳信息。
4.根据权利要求3所述的方法,其特征在于,所述基于所述对比结果,从所述第一时间戳信息中,确定所述丢失信息并通过所述Graphql服务发送至所述客户端,包括:
若所述对比结果为所述第一子时间戳信息与所述第二子时间戳信息不同;则确定所述第一子时间戳信息对应的所述时间戳信息为子丢失信息;
从所述子丢失信息中,确定所述丢失信息。
5.根据权利要求4所述的方法,其特征在于,所述从所述子丢失信息中,确定所述丢失信息,包括:
从所述子丢失信息中,确定值最大的子丢失信息为所述丢失信息。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
基于预设周期,从所述第一时间戳信息中,确定参照信息样本;
基于所述参照信息样本,对所述第一时间戳信息和所述第二时间戳信息进行删除处理。
7.根据权利要求6所述的方法,其特征在于,所述基于预设周期,从所述第一时间戳信息中,确定参照信息样本,包括:
基于所述预设周期,从所述第一时间戳信息中,确定值最大的第一子时间戳信息为所述参照信息样本。
8.根据权利要求6或7所述的方法,其特征在于,所述基于所述参照信息样本,对所述第一时间戳信息和所述第二时间戳信息进行删除处理,包括:
基于所述参照信息样本,对第一子时间戳信息和第二子时间戳信息进行对比,得到第一对比结果;
若所述第一对比结果为所述第一子时间戳信息或所述第二子时间戳信息小于所述参照信息样本,则对所述第一子时间戳信息所述第二子时间戳信息对应的所述时间戳信息进行删除处理。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:
通过所述Graphql服务接收订阅请求;所述订阅请求携带有所述第二时间戳信息或所述丢失信息;
响应于所述订阅请求,根据所述第二时间戳信息或所述丢失信息,在数据库中确定订阅信息并通过所述Graphql服务发送至客户端;其中,所述订阅信息表征所述数据库中在所述第二时间戳信息或所述丢失信息对应的时刻涉及字段变动的主题。
10.一种web实时消息推送方法,其特征在于,所述方法应用于客户端,所述客户端设置有GraphqlAPI,包括:
通过所述GraphqlAPI发送修改标识获取请求至服务器;所述修改标识请求携带有修改信息,所述客户端通过所述GraphqlAPI与所述服务器的Graphql服务实现数据交互;
通过所述Graphql API接收所述服务器响应于所述修改标识获取请求发送的第二时间戳信息;其中,所述第二时间戳信息为第一时间戳信息中所述客户端接收到的时间戳信息;所述第一时间戳信息为所述服务器发送的时间戳信息;
通过所述GraphqlAPI发送所述信息查询请求至所述服务器;所述信息查询请求携带有所述第二时间戳信息;
通过所述Graphql API接收所述服务器响应于所述信息查询请求发送的丢失信息;其中,所述丢失信息为所述第一时间戳信息中在数据交互中丢失的时间戳信息。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
通过所述GraphqlAPI发送订阅请求至所述服务器;其中,所述订阅请求携带有所述第二时间戳信息或所述丢失信息;
通过所述Graphql API接收所述服务器响应于所述订阅请求发送的订阅信息;其中,所述订阅信息表征数据库中所述第二时间戳信息或所述丢失信息对应的时刻涉及字段变动的主题。
12.一种web实时消息推送装置,其特征在于,包括第一接收单元、确定单元和第一发送单元;其中,
所述第一接收单元,用于通过Graphql服务接收修改标识获取请求;所述修改标识获取请求携带有修改信息;通过所述Graphql服务和kafka服务接收信息查询请求;所述信息查询请求携带有第二时间戳信息;
所述确定单元,用于响应于所述修改标识获取请求,根据所述修改信息,确定所述修改信息对应的第一时间戳信息;响应于所述信息查询请求,基于所述第二时间戳信息,从所述第一时间戳信息中,确定丢失信息;
所述第一发送单元,用于通过所述Graphql服务发送所述第一时间戳信息至客户端;用于通过所述Graphql服务发送所述丢失信息至所述客户端。
13.一种web实时消息推送装置,其特征在于,包括第二接收单元和第二发送单元;其中,
所述第二接收单元,用于通过Graphql API接收服务器响应于修改标识获取请求发送的第二时间戳信息;通过所述GraphqlAPI接收所述服务器响应于信息查询请求发送的丢失信息;
所述第二发送单元,用于通过所述Graphql API发送修改标识获取请求至服务器;所述修改标识请求携带有修改信息;通过所述Graphql API发送所述信息查询请求至所述服务器;所述信息查询请求携带有所述第二时间戳信息。
14.一种服务器,其特征在于,所述服务器包括:
第一存储器,用于存储可执行指令;
第一通信总线,用于实现所述第一存储器与第一处理器的通信;
所述第一处理器,用于执行所述第一存储器中存储的可执行指令,以实现如权利要求1-9任一项所述的方法。
15.一种客户端,其特征在于,所述客户端包括:
第二存储器,用于存储可执行指令;
第二通信总线,用于实现所述第二存储器与第二处理器的通信;
所述第二处理器,用于执行所述第二存储器中存储的可执行指令,以实现如权利要求10或11所述的方法。
16.一种存储介质,其特征在于,所述存储介质存储有可执行指令,当所述可执行指令被执行时,用于引起第一处理器执行如权利要求1-9任一项所述的方法;或者,用于引起第二处理器执行如权利要求10或11所述的方法。
CN202111143668.8A 2021-09-28 2021-09-28 一种web实时消息推送方法及装置、设备、存储介质 Pending CN115883639A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111143668.8A CN115883639A (zh) 2021-09-28 2021-09-28 一种web实时消息推送方法及装置、设备、存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111143668.8A CN115883639A (zh) 2021-09-28 2021-09-28 一种web实时消息推送方法及装置、设备、存储介质

Publications (1)

Publication Number Publication Date
CN115883639A true CN115883639A (zh) 2023-03-31

Family

ID=85763518

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111143668.8A Pending CN115883639A (zh) 2021-09-28 2021-09-28 一种web实时消息推送方法及装置、设备、存储介质

Country Status (1)

Country Link
CN (1) CN115883639A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116455527A (zh) * 2023-06-16 2023-07-18 深圳华锐分布式技术股份有限公司 消息重传方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116455527A (zh) * 2023-06-16 2023-07-18 深圳华锐分布式技术股份有限公司 消息重传方法

Similar Documents

Publication Publication Date Title
CN110113381B (zh) 一种区块链中订阅主题的方法及装置
US8195757B2 (en) Method, apparatus and computer program for controlling retention of publications
CN111800443B (zh) 数据处理***和方法、装置以及电子设备
CN105338061A (zh) 一种轻量级消息中间件的实现方法与***
CN111263409B (zh) 提供网络功能服务的元数据信息的方法、***以及相关设备
CN112507029A (zh) 数据处理***及数据实时处理方法
CN108228625B (zh) 一种推送消息处理方法及装置
CN113391979A (zh) 监控数据展示的处理方法、设备、***及存储介质
CN110912805B (zh) 消息读取状态的同步方法、终端、服务端及***
EP3996345A1 (en) Method for configuring priority level, cloud platform, system, computing device, and medium
CN115883639A (zh) 一种web实时消息推送方法及装置、设备、存储介质
CN110868323A (zh) 一种带宽控制方法、装置、设备及介质
CN112491951B (zh) 对等网络中的请求处理方法、服务器及存储介质
CN113315689B (zh) 信息处理方法、***、电子设备和可读存储介质
CN109831335B (zh) 一种数据监控方法、监控终端、存储介质及数据监控***
CN114095571A (zh) 数据处理方法、数据服务总线、终端和存储介质
CN116842090A (zh) 一种对账***、方法、设备及存储介质
CN116108036A (zh) 一种后端***数据离线导出方法和装置
CN117376346A (zh) 基于边缘计算与分布式计算的设备数据处理方法及装置
EP4044033A1 (en) Method and apparatus for acquiring data
CN112055058A (zh) 数据的存储方法、装置及计算机可读存储介质
CN113076380A (zh) 数据同步方法、装置、***、设备及存储介质
CN113055493A (zh) 数据包处理方法、装置、***、调度设备和存储介质
CN113079055A (zh) 一种agv运行数据的动态采集方法和装置
CN113641509A (zh) 一种物联网数据处理方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination