CN114500630A - 消息推送的方法、装置、系统、存储介质和电子设备 - Google Patents
消息推送的方法、装置、系统、存储介质和电子设备 Download PDFInfo
- Publication number
- CN114500630A CN114500630A CN202011165915.XA CN202011165915A CN114500630A CN 114500630 A CN114500630 A CN 114500630A CN 202011165915 A CN202011165915 A CN 202011165915A CN 114500630 A CN114500630 A CN 114500630A
- Authority
- CN
- China
- Prior art keywords
- message
- server
- client
- long connection
- push message
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 75
- 238000004590 computer program Methods 0.000 claims description 15
- 230000002159 abnormal effect Effects 0.000 claims description 12
- 230000003993 interaction Effects 0.000 abstract description 8
- 238000010586 diagram Methods 0.000 description 22
- 238000004891 communication Methods 0.000 description 15
- 238000012545 processing Methods 0.000 description 4
- 230000005236 sound signal Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/143—Termination or inactivation of sessions, e.g. event-controlled end of session
- H04L67/145—Termination or inactivation of sessions, e.g. event-controlled end of session avoiding end of session, e.g. keep-alive, heartbeats, resumption message or wake-up for inactive or interrupted session
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/04—Billing or invoicing
Landscapes
- Business, Economics & Management (AREA)
- Engineering & Computer Science (AREA)
- Development Economics (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Signal Processing (AREA)
- General Health & Medical Sciences (AREA)
- Cardiology (AREA)
- Health & Medical Sciences (AREA)
- Economics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本公开涉及一种消息推送的方法、装置、系统、存储介质和电子设备,涉及电子信息技术领域,本方法包括:服务器接收到客户端发送的建立请求,并确定建立请求对应的第一长连接,查询第二长连接的消息队列中是否存在客户端对应的目标推送消息,第二长连接为服务器与税控设备之间的长连接,消息队列中存储有至少一个推送消息,推送消息为税控设备生成,并发送给消息队列的消息,若消息队列中存在目标推送消息,将目标推送消息通过第一长连接发送至客户端。本公开中服务器能够在消息队列中存在客户端对应的消息时,主动将消息推送到客户端,无需客户端多次发起业务请求,就能获取到需要的消息,提高了数据交互的效率。
Description
技术领域
本公开涉及电子信息技术领域,具体地,涉及一种消息推送的方法、装置、系统、存储介质和电子设备。
背景技术
随着电子信息技术的不断发展,在税务应用领域,电子开票系统得到了广泛的应用。电子开票系统由三部分组成:客户端、服务器和税控设备,企业或者个人可以利用客户端通过服务器与税控设备进行交互。通常情况下,是由客户端向服务器发起业务请求,再由服务器返回相应的处理结果。并且,由于税控设备进行数据处理需要一定时间,无法及时将处理结果反馈给服务器,导致客户端需要多次发起业务请求才能获得处理结果。
发明内容
本公开的目的是提供一种消息推送的方法、装置、系统、存储介质和电子设备,用以解决现有技术中存在的数据交互效率较低的问题。
根据本公开实施例的第一方面,提供一种消息推送的方法,应用于服务器,所述方法包括:
接收到客户端发送的建立请求,并确定所述建立请求对应的第一长连接;
查询第二长连接的消息队列中是否存在所述客户端对应的目标推送消息,所述第二长连接为所述服务器与税控设备之间的长连接,所述消息队列中存储有至少一个推送消息,所述推送消息为所述税控设备生成,并发送给所述消息队列的消息;
若所述消息队列中存在所述目标推送消息,将所述目标推送消息通过所述第一长连接发送至所述客户端。
可选地,所述若所述消息队列中存在所述目标推送消息,将所述目标推送消息通过所述第一长连接发送至所述客户端,包括:
确定所述第一长连接的连接状态;
若所述第一长连接的连接状态为正常,将所述目标推送消息通过所述第一长连接发送至所述客户端;
所述方法还包括:
若所述消息队列中存在所述目标推送消息,且所述第一长连接的连接状态为异常,将所述目标推送消息存储至缓存数据库。
可选地,在所述接收到客户端发送的建立请求之后,所述方法还包括:
查询所述缓存数据库中是否存在所述目标推送消息;
若所述缓存数据库中存在所述目标推送消息,将所述目标推送消息通过所述第一长连接发送至所述客户端。
可选地,在所述接收到客户端发送的建立请求之后,所述方法还包括:
验证所述建立请求中包括的令牌是否有效;
若所述令牌为有效,获取所述客户端对应的用户信息和连接信息;
所述查询第二长连接的消息队列中是否存在所述客户端对应的目标推送消息,包括:
查询所述消息队列中是否存在所述用户信息对应的所述目标推送消息。
可选地,所述连接信息包括服务器地址和端口地址;所述若所述消息队列中存在所述目标推送消息,将所述目标推送消息通过所述第一长连接发送至所述客户端,包括:
确定所述服务器与所述连接信息是否匹配;
若所述服务器与所述连接信息匹配,将所述目标推送消息通过所述第一长连接发送至所述客户端;
若所述服务器与所述连接信息不匹配,确定与所述连接信息匹配的目标服务器,并将所述目标推送消息发送至所述目标服务器,以使所述目标服务器将所述目标推送消息通过所述第一长连接发送至所述客户端。
根据本公开实施例的第二方面,提供一种消息推送的方法,应用于客户端,所述方法包括:
向服务器发送建立请求,以使所述服务器确定所述建立请求对应的第一长连接;
接收所述服务器在确定第二长连接的消息队列中存在所述客户端对应的目标推送消息的情况下,通过所述第一长连接发送的所述目标推送消息,所述第二长连接为所述服务器与税控设备之间的长连接,所述消息队列中存储有至少一个推送消息,所述推送消息为所述税控设备生成,并发送给所述消息队列的消息。
可选地,所述方法还包括:
接收所述服务器在确定缓存数据库中存在所述目标推送消息的情况下,通过所述第一长连接发送的所述目标推送消息,所述缓存数据库为所述服务器在确定所述第一长连接的连接状态为异常,且所述消息队列中存在所述目标推送消息的情况下,将所述目标推送消息存储至的数据库。
根据本公开实施例的第三方面,提供一种消息推送的系统,所述消息推送的系统包括:客户端、服务器和税控设备;所述服务器用于执行本公开第一方面所述方法的步骤;所述客户端用于执行本公开第二方面所述方法的步骤。
根据本公开实施例的第四方面,提供一种消息推送的装置,应用于服务器,所述装置包括:
接收模块,用于接收到客户端发送的建立请求,并确定所述建立请求对应的第一长连接;
查询模块,用于查询第二长连接的消息队列中是否存在所述客户端对应的目标推送消息,所述第二长连接为所述服务器与税控设备之间的长连接,所述消息队列中存储有至少一个推送消息,所述推送消息为所述税控设备生成,并发送给所述消息队列的消息;
发送模块,用于若所述消息队列中存在所述目标推送消息,将所述目标推送消息通过所述第一长连接发送至所述客户端。
可选地,发送模块包括:
第一确定子模块,用于确定所述第一长连接的连接状态;
第一发送子模块,用于若所述第一长连接的连接状态为正常,将所述目标推送消息通过所述第一长连接发送至所述客户端;
所述装置还包括:
缓存模块,用于若所述消息队列中存在所述目标推送消息,且所述第一长连接的连接状态为异常,将所述目标推送消息存储至缓存数据库。
可选地,所述查询模块还用于:
在所述接收到客户端发送的建立请求之后,查询所述缓存数据库中是否存在所述目标推送消息;
所述发送模块还用于:
若所述缓存数据库中存在所述目标推送消息,将所述目标推送消息通过所述第一长连接发送至所述客户端。
可选地,所述装置还包括:
验证模块,用于在所述接收到客户端发送的建立请求之后,验证所述建立请求中包括的令牌是否有效;
获取模块,用于若所述令牌为有效,获取所述客户端对应的用户信息和连接信息;
所述查询模块用于:
查询所述消息队列中是否存在所述用户信息对应的所述目标推送消息。
可选地,所述连接信息包括服务器地址和端口地址;所述发送模块包括:
第二确定子模块,用于确定所述服务器与所述连接信息是否匹配;
第二发送子模块,用于若所述服务器与所述连接信息匹配,将所述目标推送消息通过所述第一长连接发送至所述客户端;若所述服务器与所述连接信息不匹配,确定与所述连接信息匹配的目标服务器,并将所述目标推送消息发送至所述目标服务器,以使所述目标服务器将所述目标推送消息通过所述第一长连接发送至所述客户端。
根据本公开实施例的第五方面,提供一种消息推送的装置,应用于客户端,所述装置包括:
发送模块,用于向服务器发送建立请求,以使所述服务器确定所述建立请求对应的第一长连接;
接收模块,用于接收所述服务器在确定第二长连接的消息队列中存在所述客户端对应的目标推送消息的情况下,通过所述第一长连接发送的所述目标推送消息,所述第二长连接为所述服务器与税控设备之间的长连接,所述消息队列中存储有至少一个推送消息,所述推送消息为所述税控设备生成,并发送给所述消息队列的消息。
可选地,所述接收模块还用于:
接收所述服务器在确定缓存数据库中存在所述目标推送消息的情况下,通过所述第一长连接发送的所述目标推送消息,所述缓存数据库为所述服务器在确定所述第一长连接的连接状态为异常,且所述消息队列中存在所述目标推送消息的情况下,将所述目标推送消息存储至的数据库。
根据本公开实施例的第六方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本公开第一方面所述方法的步骤。
根据本公开实施例的第七方面,提供一种计算机可读存储介质其上存储有计算机程序,该程序被处理器执行时实现本公开第二方面所述方法的步骤。
根据本公开实施例的第八方面,提供一种电子设备,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现本公开第一方面所述方法的步骤。
根据本公开实施例的第九方面,提供一种电子设备,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现本公开第二方面所述方法的步骤。
通过上述技术方案,本公开中客户端向服务器发送建立请求,之后服务器根据建立请求确定对应的第一长连接,再查询服务器与税控设备之间的第二长连接的消息队列中是否有客户端对应的目标推送消息,如果消息队列中存在目标推送消息,那么服务器将目标推送消息通过第一长连接发送到客户端。本公开中服务器能够在消息队列中存在客户端对应的消息时,主动将消息推送到客户端,无需客户端多次发起业务请求,就能获取到需要的消息,提高了数据交互的效率。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1是一种电子开票系统的结构图;
图2是根据一示例性实施例示出的一种消息推送的方法的流程图;
图3是根据一示例性实施例示出的另一种消息推送的方法的流程图;
图4是根据一示例性实施例示出的另一种消息推送的方法的流程图;
图5是根据一示例性实施例示出的另一种消息推送的方法的流程图;
图6是根据一示例性实施例示出的另一种消息推送的方法的流程图;
图7是根据一示例性实施例示出的一种消息推送的方法的流程图;
图8是根据一示例性实施例示出的另一种消息推送的方法的流程图;
图9是根据一示例性实施例示出的一种消息推送的装置的框图;
图10是根据一示例性实施例示出的另一种消息推送的装置的框图;
图11是根据一示例性实施例示出的另一种消息推送的装置的框图;
图12是根据一示例性实施例示出的另一种消息推送的装置的框图;
图13是根据一示例性实施例示出的一种消息推送的装置的框图;
图14是根据一示例性实施例示出的一种电子设备的框图;
图15是根据一示例性实施例示出的一种电子设备的框图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
在介绍本公开提供的消息推送服务之前,首先对本公开各个实施例所涉及的应用场景进行介绍。该应用场景可以是一种电子开票系统,该系统中包括客户端、服务器和税控设备,其结构如图1所示。客户端、服务器和税控设备之间通过网络连接,能够实现数据交互。其中,客户端可以是智能手机、平板电脑、智能电视、PDA(英文:Personal DigitalAssistant,中文:个人数字助理)、便携计算机等移动终端,也可以是台式计算机等固定终端,用户(例如企业用户,或者个人用户)可以通过客户端上的Web页面、H5(英文:HyperText Markup Language 5.0,中文:超级文本标记语言5.0)页面,或者APP(英文:Application,中文:应用程序)等方式来访问服务器。服务器可以包括但不限于:实体服务器、服务器集群或云端服务器等,服务器可以采用集群部署的方式。税控设备可以是能够提供各种财税服务的设备。
图2是根据一示例性实施例示出的一种消息推送的方法的流程图,如图2所示,该方法应用于服务器,可以包括以下步骤:
步骤101,接收到客户端发送的建立请求,并确定建立请求对应的第一长连接。
举例来说,用户可以通过客户端上的Web页面、H5页面或者APP登录电子开票系统,之后客户端向服务器发送建立请求,服务器在接收到客户端发送的建立请求后,可以先确定该建立请求对应的第一长连接。其中,第一长连接可以是客户端与服务器之间建立的长连接,也可以是客户端与电子开票系统中其他服务器之间建立的长连接,其他服务器可以理解为电子开票系统的服务器集群中,除执行本公开实施例的服务器之外的其他服务器。进一步的,第一长连接可以是客户端与服务器(或者其他服务器)之间,基于WebSocket协议建立的全双工通信长连接,使得客户端与服务器(或者其他服务器)之间可以互相传输数据。
步骤102,查询第二长连接的消息队列中是否存在该客户端对应的目标推送消息,第二长连接为服务器与税控设备之间的长连接,消息队列中存储有至少一个推送消息,推送消息为税控设备生成,并发送给消息队列的消息。
示例的,服务器在确定第一长连接之后,可以开始持续监听第二长连接的消息队列中是否存在该客户端对应的目标推送消息。其中,第二长连接为服务器与税控设备之间的长连接,可以理解为,在构建电子开票系统时,可以在服务器与税控设备之间,基于WebSocket协议建立的全双工通信长连接,使得服务器和税控设备之间可以互相传输数据。第二长连接上可以设置有消息队列(英文:Message Queue,缩写:MQ),用于存储税控设备生成的推送消息,推送消息可以为系统通知消息、用户状态信息、与用户正在办理的业务的相关消息。同时,消息队列在存储推送消息时,还会存储有推送消息对应的客户端的客户端标识(能够唯一标识客户端)。可以理解为,消息队列中存储有多个记录,每个记录中包括一个推送消息,和该推送消息对应的客户端标识。这样,服务器可以在消息队列中查找是否存在目标推送消息。
需要说明的是,推送消息可以是税控设备主动生成的消息。例如某个客户端预先订阅了A类税务消息,那么当税控设备中产生了一条属于A类税务消息的推送消息时,税控设备可以将该条推送消息,和该客户端的客户端标识发送到消息队列中。推送消息还可以是客户端向服务器发送业务请求,由服务器将业务请求转发至税控设备后,税控设备根据业务请求生成的消息。例如,某个客户端向服务器发送了开票请求(其中可以包括开票信息),服务器将开票请求转发至税控设备,税控设备根据开票信息生成电子发票,并将电子发票作为推送消息,发送到消息队列中。
步骤103,若消息队列中存在目标推送消息,将目标推送消息通过第一长连接发送至客户端。
示例的,如果服务器确定消息队列中存在目标推送消息,那么可以从消息队列中取出目标推送消息,然后将目标推送消息通过第一长连接发送至客户端。需要说明的是,如果步骤101中确定的第一长连接是客户端与服务器之间建立的长连接,那么服务器可以直接将目标推送消息发送至客户端。如果第一长连接是客户端与其他服务器之间建立的长连接,那么服务器可以将目标推送消息发送到其他服务器,再由其他服务器通过第一长连接,将目标推送消息发送给客户端。
综上所述,本公开中客户端向服务器发送建立请求,之后服务器根据建立请求确定对应的第一长连接,再查询服务器与税控设备之间的第二长连接的消息队列中是否有客户端对应的目标推送消息,如果消息队列中存在目标推送消息,那么服务器将目标推送消息通过第一长连接发送到客户端。本公开中服务器能够在消息队列中存在客户端对应的消息时,主动将消息推送到客户端,无需客户端多次发起业务请求,就能获取到需要的消息,提高了数据交互的效率。
图3是根据一示例性实施例示出的另一种消息推送的方法的流程图,如图3所示,步骤103可以通过以下步骤来实现:
步骤1031,确定第一长连接的连接状态。
步骤1032,若第一长连接的连接状态为正常,将目标推送消息通过第一长连接发送至客户端。
该方法还可以包括:
步骤104,若消息队列中存在目标推送消息,且第一长连接的连接状态为异常,将目标推送消息存储至缓存数据库。
举例来说,要将目标推送消息通过第一长连接发送至客户端,首先需要确保第一长连接的连接状态是否正常。若连接状态为正常,表示第一长连接当前可以传输数据,那么可以将目标推送消息通过第一长连接发送至该客户端。若连接状态为异常,表示第一长连接当前无法传输数据,那么可以将目标推送消息存储至缓存数据库里。
需要说明的是,缓存数据库可以部署在服务器上,即服务器可以直接将目标推送消息存储在本地。缓存数据库还可以部署在一个专用的缓存服务器上,即服务器可以将目标推送消息发送至缓存服务器,以使缓存服务器将目标推送消息存储至缓存数据库。进一步的,在将目标推送消息存储至缓存数据库的同时,还可以将客户端的客户端标识一同存入缓存数据库。可以理解为,缓存数据库中存储有多个记录,每个记录中包括一个目标推送消息,和该目标推送消息对应的客户端标识。这样,服务器可以在缓存数据库中查找是否存在客户端对应的目标推送消息。
图4是根据一示例性实施例示出的另一种消息推送的方法的流程图,如图4所示,在步骤101之后,该方法还可以包括以下步骤:
步骤105,查询缓存数据库中是否存在目标推送消息。
步骤106,若缓存数据库中存在目标推送消息,将目标推送消息通过第一长连接发送至客户端。
举例来说,服务器在接收到客户端发送的建立请求后,可以先查询缓存数据库中是否存在对应于该客户端的目标推送消息。若缓存数据库中存在目标推送消息,那么可以先将目标推送消息从缓存数据库中取出,并将目标推送消息通过第一长连接发送至该客户端。若缓存数据库中不存在目标推送消息,那么服务器可以再执行步骤102至步骤103,以监听消息队列中是否存在目标推送消息。
图5是根据一示例性实施例示出的另一种消息推送的方法的流程图,如图5所示,在步骤101之后,该方法还可以包括以下步骤:
步骤107,验证建立请求中包括的令牌是否有效。
步骤108,若令牌为有效,获取客户端对应的用户信息和连接信息。
相应的,步骤102的实现方式可以为:
查询消息队列中是否存在用户信息对应的目标推送消息。
举例来说,用户通过客户端登录电子开票系统时,可以输入登录信息(例如可以包括用户名和密码)以触发登录请求,服务器收到客户端发送的登录请求后,对用户的登录信息进行验证,验证成功后服务器会生成一个随机数作为令牌存储在本服务器内,并将该令牌发送给客户端,客户端接收到该令牌后,以后每次向服务器发送数据时都会携带此令牌。
客户端在向该服务器发起建立请求时,建立请求中会携带有令牌。服务器收到建立请求后,会验证建立请求中携带的令牌,与服务器中存储的令牌是否一致。若建立请求中携带的令牌与服务器中存储的令牌一致,那么可以确定令牌有效,第一长连接为有效连接。若建立请求中携带的令牌与服务器中存储的令牌不一致,那么可以确定令牌无效,第一长连接为无效连接。
服务器可以在确定令牌有效之后,获取建立请求中携带的第一长连接的唯一标识ID、客户端对应的用户信息与连接信息,并存储在缓存服务器中,其中,连接信息包括服务器地址和端口地址。
图6是根据一示例性实施例示出的另一种消息推送的方法的流程图,如图6所示,步骤103还可以通过以下步骤实现:
步骤1033,确定服务器与连接信息是否匹配。
步骤1034,若服务器与连接信息匹配,将目标推送消息通过第一长连接发送至客户端。
步骤1035,若服务器与连接信息不匹配,确定与连接信息匹配的目标服务器,并将目标推送消息发送至目标服务器,以使目标服务器将目标推送消息通过第一长连接发送至客户端。
示例的,要将目标推送消息通过第一长连接发送至客户端,可以先确定服务器与步骤108中获取的连接信息是否匹配,即确定第一长连接是客户端与服务器之间建立的长连接,或者是客户端与其他服务器之间建立的长连接。具体的,若连接信息中包括的服务器地址与服务器的地址相同,且连接信息中包括的端口地址,位于服务器上,那么确定服务器与连接信息匹配,表示第一长连接是客户端与服务器之间建立的长连接,那么服务器可以直接将目标推送消息发送至客户端。若连接信息中包括的服务器地址与服务器的地址不相同,或者连接信息中包括的端口地址,不在服务器上,那么确定服务器与连接信息不匹配,表示第一长连接是客户端与其他服务器之间建立的长连接。那么服务器可以先根据连接信息确定目标服务器(目标服务器的地址与服务器地址相同,且端口地址位于目标服务器上),然后将目标推送消息发送至目标服务器,以使目标服务器将目标推送消息通过第一长连接发送至客户端。也就是说服务器先把目标推送消息转发到目标服务器,再由目标服务器将目标推送消息发送至客户端。
综上所述,本公开中客户端向服务器发送建立请求,之后服务器根据建立请求确定对应的第一长连接,再查询服务器与税控设备之间的第二长连接的消息队列中是否有客户端对应的目标推送消息,如果消息队列中存在目标推送消息,那么服务器将目标推送消息通过第一长连接发送到客户端。本公开中服务器能够在消息队列中存在客户端对应的消息时,主动将消息推送到客户端,无需客户端多次发起业务请求,就能获取到需要的消息,提高了数据交互的效率。
图7是根据一示例性实施例示出的一种消息推送的方法的流程图,如图7所示,该方法应用于客户端,可以包括以下步骤:
步骤201,向服务器发送建立请求,以使服务器确定建立请求对应的第一长连接。
举例来说,用户可以通过客户端上的Web页面、H5页面或者APP登录电子开票系统,之后客户端向服务器发送建立请求,以使服务器可以在接收到客户端发送的建立请求后,确定该建立请求对应的第一长连接。其中,第一长连接可以是客户端与服务器之间建立的长连接,也可以是客户端与电子开票系统中其他服务器之间建立的长连接,其他服务器可以理解为电子开票系统的服务器集群中,除执行本公开实施例的服务器之外的其他服务器。进一步的,第一长连接可以是客户端与服务器(或者其他服务器)之间,基于WebSocket协议建立的全双工通信长连接,使得客户端与服务器(或者其他服务器)之间可以互相传输数据。
步骤202,接收服务器在确定第二长连接的消息队列中存在客户端对应的目标推送消息的情况下,通过第一长连接发送的目标推送消息,第二长连接为服务器与税控设备之间的长连接,消息队列中存储有至少一个推送消息,推送消息为税控设备生成,并发送给消息队列的消息。
示例的,客户端可以接收服务器在确定第二长连接的消息队列中存在目标推送消息时,从消息队列中取出并通过第一长连接发送的目标推送消息。其中,如果服务器确定的第一长连接是客户端与服务器之间建立的长连接,那么客户端收到的目标推送消息来自于服务器。如果第一长连接是客户端与其他服务器之间建立的长连接,那么客户端收到的目标推送消息来自于其他服务器。其中,第二长连接为服务器与税控设备之间的长连接,可以理解为,在构建电子开票系统时,可以在服务器与税控设备之间,基于WebSocket协议建立的全双工通信长连接,使得服务器和税控设备之间可以互相传输数据。
需要说明的是,推送消息可以是税控设备主动生成的消息。例如客户端预先订阅了A类税务消息,那么当税控设备中产生了一条属于A类税务消息的推送消息时,税控设备可以将该条推送消息,和客户端的客户端标识发送到消息队列中。推送消息还可以是客户端向服务器发送业务请求,由服务器将业务请求转发至税控设备后,税控设备根据业务请求生成的消息。例如,客户端向服务器发送了开票请求(其中可以包括开票信息),服务器将开票请求转发至税控设备,税控设备根据开票信息生成电子发票,并将电子发票作为推送消息,发送到消息队列中。
图8是根据一示例性实施例示出的另一种消息推送的方法的流程图,如图8所示,该方法还可以包括:
步骤203,接收服务器在确定缓存数据库中存在目标推送消息的情况下,通过第一长连接发送的目标推送消息,缓存数据库为服务器在确定第一长连接的连接状态为异常,且消息队列中存在目标推送消息的情况下,将目标推送消息存储至的数据库。
举例来说,服务器在将目标推送消息通过第一长连接发送至客户端时,可以先确定第一长连接的连接状态是否正常。若连接状态为正常,表示第一长连接当前可以传输数据,那么服务器可以将目标推送消息通过第一长连接发送至该客户端。若连接状态为异常,表示第一长连接当前无法传输数据,那么服务器可以将目标推送消息存储至缓存数据库里。那么客户端在向服务器发送建立请求后,服务器可以先查询缓存数据库中是否存在对应于该客户端的目标推送消息。若缓存数据库中存在目标推送消息,那么客户端会接收到服务器从缓存数据库中取出并通过第一长连接发送至客户端的目标推送消息。
需要说明的是,缓存数据库可以部署在服务器上,即服务器可以直接将目标推送消息存储在本地。缓存数据库还可以部署在一个专用的缓存服务器上,即服务器可以将目标推送消息发送至缓存服务器,以使缓存服务器将目标推送消息存储至缓存数据库。
综上所述,本公开中客户端向服务器发送建立请求,之后服务器根据建立请求确定对应的第一长连接,再查询服务器与税控设备之间的第二长连接的消息队列中是否有客户端对应的目标推送消息,如果消息队列中存在目标推送消息,那么服务器将目标推送消息通过第一长连接发送到客户端。本公开中服务器能够在消息队列中存在客户端对应的消息时,主动将消息推送到客户端,无需客户端多次发起业务请求,就能获取到需要的消息,提高了数据交互的效率。
在一示例性实施例中,还提供一种消息推送的系统,该系统可以包括:客户端、服务器和税控设备。其中客户端可以用于执行上述应用于客户端的消息推送的方法的步骤,服务器可以用于执行上述应用于服务器的消息推送的方法的步骤。该系统例如可以是电子开票系统(如图1所示)。
图9是根据一示例性实施例示出的一种消息推送的装置的框图,如图9所示,该装置300应用于服务器,可以包括以下几个模块:
接收模块301,用于接收到客户端发送的建立请求,并确定建立请求对应的第一长连接。
查询模块302,用于查询第二长连接的消息队列中是否存在客户端对应的目标推送消息,第二长连接为服务器与税控设备之间的长连接,消息队列中存储有至少一个推送消息,推送消息为税控设备生成,并发送给消息队列的消息。
发送模块303,用于若消息队列中存在目标推送消息,将目标推送消息通过第一长连接发送至客户端。
图10是根据一示例性实施例示出的另一种消息推送的装置的框图,如图10所示,发送模块303包括:
第一确定子模块3031,用于确定第一长连接的连接状态。
第一发送子模块3032,用于若第一长连接的连接状态为正常,将目标推送消息通过第一长连接发送至客户端。
该装置300还包括:
缓存模块304,用于若消息队列中存在目标推送消息,且第一长连接的连接状态为异常,将目标推送消息存储至缓存数据库。
在一种实现方式中,查询模块302还用于:在接收到客户端发送的建立请求之后,查询缓存数据库中是否存在目标推送消息。
发送模块303还用于:若缓存数据库中存在目标推送消息,将目标推送消息通过第一长连接发送至客户端。
图11是根据一示例性实施例示出的另一种消息推送的装置的框图,如图11所示,该装置300还包括:
验证模块305,用于在接收到客户端发送的建立请求之后,验证建立请求中包括的令牌是否有效。
获取模块306,用于若令牌为有效,获取客户端对应的用户信息和连接信息。
查询模块302用于:查询消息队列中是否存在用户信息对应的目标推送消息。
图12是根据一示例性实施例示出的另一种消息推送的装置的框图,所述连接信息包括服务器地址和端口地址。如图12所示,发送模块303包括:
第二确定子模块3033,用于确定服务器与连接信息是否匹配。
第二发送子模块3034,用若服务器与连接信息匹配,将目标推送消息通过第一长连接发送至客户端;若服务器与连接信息不匹配,确定与连接信息匹配的目标服务器,并将目标推送消息发送至目标服务器,以使目标服务器将目标推送消息通过第一长连接发送至客户端。
图13是根据一示例性实施例示出的一种消息推送的装置的框图,如图13所示,该装置400应用于客户端,可以包括以下几个模块:
发送模块401,用于向服务器发送建立请求,以使服务器确定建立请求对应的第一长连接。
接收模块402,用于接收服务器在确定第二长连接的消息队列中存在客户端对应的目标推送消息的情况下,通过第一长连接发送的目标推送消息,第二长连接为服务器与税控设备之间的长连接,消息队列中存储有至少一个推送消息,推送消息为税控设备生成,并发送给消息队列的消息。
在一种实现方式中,接收模块402还可以通过以下方式来实现:
接收服务器在确定缓存数据库中存在目标推送消息的情况下,通过第一长连接发送的目标推送消息,缓存数据库为服务器在确定第一长连接的连接状态为异常,且消息队列中存在目标推送消息的情况下,将目标推送消息存储至的数据库。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
综上所述,本公开中客户端向服务器发送建立请求,之后服务器根据建立请求确定对应的第一长连接,再查询服务器与税控设备之间的第二长连接的消息队列中是否有客户端对应的目标推送消息,如果消息队列中存在目标推送消息,那么服务器将目标推送消息通过第一长连接发送到客户端。本公开中服务器能够在消息队列中存在客户端对应的消息时,主动将消息推送到客户端,无需客户端多次发起业务请求,就能获取到需要的消息,提高了数据交互的效率。
图14是根据一示例性实施例示出的一种电子设备1400的框图。如图14所示,该电子设备1400可以包括:处理器1401,存储器1402。该电子设备1400还可以包括多媒体组件1403,输入/输出(I/O)接口1404,以及通信组件1405中的一者或多者。
其中,处理器1401用于控制该电子设备1400的整体操作,以完成上述的应用于客户端的消息推送的方法中的全部或部分步骤。存储器1402用于存储各种类型的数据以支持在该电子设备1400的操作,这些数据例如可以包括用于在该电子设备1400上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器1402可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件1403可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器1402或通过通信组件1405发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口1404为处理器1401和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件1405用于该电子设备1400与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near Field Communication,简称NFC),2G、3G、4G、NB-IOT、eMTC、或其他5G等等,或它们中的一种或几种的组合,在此不做限定。因此相应的该通信组件1405可以包括:Wi-Fi模块,蓝牙模块,NFC模块等等。
在一示例性实施例中,电子设备1400可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述应用于客户端的消息推送的方法。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述应用于客户端的消息推送的方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器1402,上述程序指令可由电子设备1400的处理器1401执行以完成上述应用于客户端的消息推送的方法。
图15是根据一示例性实施例示出的一种电子设备1500的框图。例如,电子设备1500可以被提供为一服务器。参照图15,电子设备1500包括处理器1522,其数量可以为一个或多个,以及存储器1532,用于存储可由处理器1522执行的计算机程序。存储器1532中存储的计算机程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理器1522可以被配置为执行该计算机程序,以执行上述应用于服务器的消息推送的方法。
另外,电子设备1500还可以包括电源组件1526和通信组件1550,该电源组件1526可以被配置为执行电子设备1500的电源管理,该通信组件1550可以被配置为实现电子设备1500的通信,例如,有线或无线通信。此外,该电子设备1500还可以包括输入/输出(I/O)接口1558。电子设备1500可以操作基于存储在存储器1532的操作系统,例如WindowsServerTM,Mac OS XTM,UnixTM,LinuxTM等等。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述应用于服务器的消息推送的方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器1532,上述程序指令可由电子设备1500的处理器1522执行以完成上述应用于服务器的消息推送的方法。
在另一示例性实施例中,还提供一种计算机程序产品,该计算机程序产品包含能够由可编程的装置执行的计算机程序,该计算机程序具有当由该可编程的装置执行时用于执行上述应用于服务器的消息推送的方法的代码部分。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。
Claims (12)
1.一种消息推送的方法,其特征在于,应用于服务器,所述方法包括:
接收到客户端发送的建立请求,并确定所述建立请求对应的第一长连接;
查询第二长连接的消息队列中是否存在所述客户端对应的目标推送消息,所述第二长连接为所述服务器与税控设备之间的长连接,所述消息队列中存储有至少一个推送消息,所述推送消息为所述税控设备生成,并发送给所述消息队列的消息;
若所述消息队列中存在所述目标推送消息,将所述目标推送消息通过所述第一长连接发送至所述客户端。
2.根据权利要求1所述的方法,其特征在于,所述若所述消息队列中存在所述目标推送消息,将所述目标推送消息通过所述第一长连接发送至所述客户端,包括:
确定所述第一长连接的连接状态;
若所述第一长连接的连接状态为正常,将所述目标推送消息通过所述第一长连接发送至所述客户端;
所述方法还包括:
若所述消息队列中存在所述目标推送消息,且所述第一长连接的连接状态为异常,将所述目标推送消息存储至缓存数据库。
3.根据权利要求2所述的方法,其特征在于,在所述接收到客户端发送的建立请求之后,所述方法还包括:
查询所述缓存数据库中是否存在所述目标推送消息;
若所述缓存数据库中存在所述目标推送消息,将所述目标推送消息通过所述第一长连接发送至所述客户端。
4.根据权利要求1所述的方法,其特征在于,在所述接收到客户端发送的建立请求之后,所述方法还包括:
验证所述建立请求中包括的令牌是否有效;
若所述令牌为有效,获取所述客户端对应的用户信息和连接信息;
所述查询第二长连接的消息队列中是否存在所述客户端对应的目标推送消息,包括:
查询所述消息队列中是否存在所述用户信息对应的所述目标推送消息。
5.根据权利要求4所述的方法,其特征在于,所述连接信息包括服务器地址和端口地址;所述若所述消息队列中存在所述目标推送消息,将所述目标推送消息通过所述第一长连接发送至所述客户端,包括:
确定所述服务器与所述连接信息是否匹配;
若所述服务器与所述连接信息匹配,将所述目标推送消息通过所述第一长连接发送至所述客户端;
若所述服务器与所述连接信息不匹配,确定与所述连接信息匹配的目标服务器,并将所述目标推送消息发送至所述目标服务器,以使所述目标服务器将所述目标推送消息通过所述第一长连接发送至所述客户端。
6.一种消息推送的方法,其特征在于,应用于客户端,所述方法包括:
向服务器发送建立请求,以使所述服务器确定所述建立请求对应的第一长连接;
接收所述服务器在确定第二长连接的消息队列中存在所述客户端对应的目标推送消息的情况下,通过所述第一长连接发送的所述目标推送消息,所述第二长连接为所述服务器与税控设备之间的长连接,所述消息队列中存储有至少一个推送消息,所述推送消息为所述税控设备生成,并发送给所述消息队列的消息。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
接收所述服务器在确定缓存数据库中存在所述目标推送消息的情况下,通过所述第一长连接发送的所述目标推送消息,所述缓存数据库为所述服务器在确定所述第一长连接的连接状态为异常,且所述消息队列中存在所述目标推送消息的情况下,将所述目标推送消息存储至的数据库。
8.一种消息推送的系统,其特征在于,所述消息推送的系统包括:客户端、服务器和税控设备;所述客户端用于执行权利要求6或7所述方法的步骤,所述服务器用于执行权利要求1-5中任一项所述方法的步骤。
9.一种消息推送的装置,其特征在于,应用于服务器,所述装置包括:
接收模块,用于接收到客户端发送的建立请求,并确定所述建立请求对应的第一长连接;
查询模块,用于查询第二长连接的消息队列中是否存在所述客户端对应的目标推送消息,所述第二长连接为所述服务器与税控设备之间的长连接,所述消息队列中存储有至少一个推送消息,所述推送消息为所述税控设备生成,并发送给所述消息队列的消息;
发送模块,用于若所述消息队列中存在所述目标推送消息,将所述目标推送消息通过所述第一长连接发送至所述客户端。
10.一种消息推送的装置,其特征在于,应用于客户端,所述装置包括:
发送模块,用于向服务器发送建立请求,以使所述服务器确定所述建立请求对应的第一长连接;
接收模块,用于接收所述服务器在确定第二长连接的消息队列中存在所述客户端对应的目标推送消息的情况下,通过所述第一长连接发送的所述目标推送消息,所述第二长连接为所述服务器与税控设备之间的长连接,所述消息队列中存储有至少一个推送消息,所述推送消息为所述税控设备生成,并发送给所述消息队列的消息。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-5或6-7中任一项所述方法的步骤。
12.一种电子设备,其特征在于,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现权利要求1-5或6-7中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011165915.XA CN114500630A (zh) | 2020-10-27 | 2020-10-27 | 消息推送的方法、装置、系统、存储介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011165915.XA CN114500630A (zh) | 2020-10-27 | 2020-10-27 | 消息推送的方法、装置、系统、存储介质和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114500630A true CN114500630A (zh) | 2022-05-13 |
Family
ID=81470234
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011165915.XA Pending CN114500630A (zh) | 2020-10-27 | 2020-10-27 | 消息推送的方法、装置、系统、存储介质和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114500630A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114979238A (zh) * | 2022-05-24 | 2022-08-30 | 浪潮软件集团有限公司 | 多客户端数据实时推送方法及系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102523177A (zh) * | 2011-12-19 | 2012-06-27 | 北京新媒传信科技有限公司 | 一种消息推送服务的实现方法与系统 |
KR101367265B1 (ko) * | 2013-06-10 | 2014-02-28 | 주식회사 톡씨소프트 | 푸시 서버, 푸시 서비스 제공시스템 및 그 방법 |
CN105825409A (zh) * | 2015-01-07 | 2016-08-03 | 航天信息股份有限公司 | 一种电子发票消息推送系统及方法 |
WO2016177285A1 (zh) * | 2015-05-07 | 2016-11-10 | 阿里巴巴集团控股有限公司 | 一种数据推送方法及装置 |
CN109600444A (zh) * | 2018-12-14 | 2019-04-09 | 北京向上心科技有限公司 | 数据推送方法、服务器、终端、电子设备及可读存储介质 |
CN109598879A (zh) * | 2018-12-29 | 2019-04-09 | 航天信息股份有限公司 | 集中控制多个税控设备的方法及装置 |
CN110300050A (zh) * | 2019-05-23 | 2019-10-01 | 中国平安人寿保险股份有限公司 | 消息推送方法、装置、计算机设备及存储介质 |
CN110633442A (zh) * | 2019-08-19 | 2019-12-31 | 阿里巴巴集团控股有限公司 | 一种推送方法、装置及电子设备 |
-
2020
- 2020-10-27 CN CN202011165915.XA patent/CN114500630A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102523177A (zh) * | 2011-12-19 | 2012-06-27 | 北京新媒传信科技有限公司 | 一种消息推送服务的实现方法与系统 |
KR101367265B1 (ko) * | 2013-06-10 | 2014-02-28 | 주식회사 톡씨소프트 | 푸시 서버, 푸시 서비스 제공시스템 및 그 방법 |
CN105825409A (zh) * | 2015-01-07 | 2016-08-03 | 航天信息股份有限公司 | 一种电子发票消息推送系统及方法 |
WO2016177285A1 (zh) * | 2015-05-07 | 2016-11-10 | 阿里巴巴集团控股有限公司 | 一种数据推送方法及装置 |
CN109600444A (zh) * | 2018-12-14 | 2019-04-09 | 北京向上心科技有限公司 | 数据推送方法、服务器、终端、电子设备及可读存储介质 |
CN109598879A (zh) * | 2018-12-29 | 2019-04-09 | 航天信息股份有限公司 | 集中控制多个税控设备的方法及装置 |
CN110300050A (zh) * | 2019-05-23 | 2019-10-01 | 中国平安人寿保险股份有限公司 | 消息推送方法、装置、计算机设备及存储介质 |
CN110633442A (zh) * | 2019-08-19 | 2019-12-31 | 阿里巴巴集团控股有限公司 | 一种推送方法、装置及电子设备 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114979238A (zh) * | 2022-05-24 | 2022-08-30 | 浪潮软件集团有限公司 | 多客户端数据实时推送方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10686775B2 (en) | Method and apparatus of providing messaging service and callback feature to mobile stations | |
CN102231746B (zh) | 验证标识信息的方法及终端 | |
CN108293181B (zh) | 一种通信标识绑定的处理方法及终端 | |
CN113347242B (zh) | 跨设备资源访问方法、装置、存储介质及电子设备 | |
CN110602270A (zh) | 域名解析方法、装置、计算机设备及存储介质 | |
CN112087475B (zh) | 一种云平台组件应用的消息推送方法、装置及消息服务器 | |
CN114500630A (zh) | 消息推送的方法、装置、系统、存储介质和电子设备 | |
CN108156071B (zh) | 向社区添加成员的方法、终端设备及计算机可读存储介质 | |
CN108737350B (zh) | 一种信息处理方法及客户端 | |
CN108174349B (zh) | 一种短信通道质量的检测方法及网络服务器 | |
CN115168074A (zh) | 接口请求的并发数量控制方法、装置、介质及电子设备 | |
CN114363408A (zh) | 信息推送方法、装置、计算机可读介质及计算机设备 | |
CN115412920A (zh) | 一种物联网设备绑定系统、方法、装置及电子设备 | |
CN117221400A (zh) | 应用业务访问方法、装置、计算机设备、存储介质 | |
CN115840399A (zh) | 一种基于物联网的智能楼宇监控系统及其监控方法 | |
CN117201024A (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 |