CN114979097A - 基于mqtt的消息推送方法、装置及电子设备 - Google Patents
基于mqtt的消息推送方法、装置及电子设备 Download PDFInfo
- Publication number
- CN114979097A CN114979097A CN202110619705.1A CN202110619705A CN114979097A CN 114979097 A CN114979097 A CN 114979097A CN 202110619705 A CN202110619705 A CN 202110619705A CN 114979097 A CN114979097 A CN 114979097A
- Authority
- CN
- China
- Prior art keywords
- terminal
- mqtt
- service
- target
- topic type
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/26—Special purpose or proprietary protocols or architectures
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/70—Reducing energy consumption in communication networks in wireless communication networks
Landscapes
- Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本申请实施例提供了一种基于MQTT的消息推送方法、装置及电子设备,该方法包括:获取第一终端发起的MQTT服务请求,然后确定与MQTT服务请求对应的服务主题类型,根据服务主题类型确定与MQTT服务请求对应的至少一个目标终端。以目标传输方式向各目标终端推送消息,以目标传输方式单次推送消息时,各目标终端均能接收到消息。通过本申请实施例提供的技术方案,在确定目标终端之后,在单次推送消息时,各个目标终端均能接收到消息,避免了单独为各个终端推送消息而造成服务器负载过大的问题。
Description
技术领域
本发明涉及物联网技术领域,尤其涉及一种基于MQTT的消息推送方法、装置及电子设备。
背景技术
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议。使用MQTT的发布/订阅消息模式时,可以为终端提供消息推送,MQTT服务器为终端提供了通用的认证、连接、消息发布与订阅的后台服务器。针对每个终端,MQTT服务器需要为每个终端分别单独推送消息,当终端数量过多时,逐一为每个终端单独推送消息会导致MQTT服务器负载过大,影响MQTT服务器的性能。
发明内容
本申请实施例的目的是提供一种基于MQTT的消息推送方法、装置及电子设备,以解决MQTT服务器负载过大,影响MQTT服务器的性能的问题。
为了解决上述技术问题,本申请实施例是这样实现的:
第一方面,本申请实施例提供了一种基于MQTT的消息推送方法,包括:
获取第一终端发起的MQTT服务请求;
确定与所述MQTT服务请求对应的服务主题类型;
根据所述服务主题类型确定与所述MQTT服务请求对应的至少一个目标终端;
以目标传输方式向各所述目标终端推送消息,以所述目标传输方式单次推送所述消息时,各所述目标终端均能接收到所述消息。
第二方面,本申请实施例提供了一种基于MQTT的消息推送装置,包括:
获取模块,用于获取第一终端发起的MQTT服务请求;
第一确定模块,用于确定与所述MQTT服务请求对应的服务主题类型;
第二确定模块,用于根据所述服务主题类型确定与所述MQTT服务请求对应的至少一个目标终端;
推送模块,用于以目标传输方式向各所述目标终端推送消息,以所述目标传输方式单次推送所述消息时,各所述目标终端均能接收到所述消息。
第三方面,本申请实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线;其中,所述处理器、所述通信接口以及所述存储器通过总线完成相互间的通信;所述存储器,用于存放计算机程序;所述处理器,用于执行所述存储器上所存放的程序,实现如第一方面所述的基于MQTT的消息推送方法步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,实现如第一方面所述的基于MQTT的消息推送方法步骤。
由以上本申请实施例提供的技术方案可见,获取第一终端发起的MQTT服务请求,然后确定与MQTT服务请求对应的服务主题类型,根据服务主题类型确定与MQTT服务请求对应的至少一个目标终端。以目标传输方式向各目标终端推送消息,以目标传输方式单次推送消息时,各目标终端均能接收到消息。因此,通过本申请实施例提供的技术方案,在确定目标终端之后,在单次推送消息时,各个目标终端均能接收到消息,避免了单独为各个终端推送消息而造成服务器负载过大的问题,MQTT服务器的性能不会受到太大的影响。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种基于MQTT的消息推送方法的第一种流程示意图;
图2为本申请实施例提供的一种基于MQTT的消息推送方法的第二种流程示意图;
图3为本申请实施例提供的一种基于MQTT的消息推送方法的第三种流程示意图;
图4A示出本申请实施例提供的一种基于MQTT的消息推送系统的结构示意图;
图4B示出本申请实施例提供的一种基于MQTT的消息推送方法的线程示意图;
图5为本申请实施例提供的一种基于MQTT的消息推送装置的模块组成示意图;
图6为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
本申请实施例提供了一种基于MQTT的消息推送方法、装置及电子设备,解决了MQTT服务器负载过大,影响MQTT服务器的性能的问题。
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
MQTT是一个基于客户端与服务器的消息发布/订阅传输协议,实现MQTT协议时,需要客户端和服务器通讯,在通讯的过程中,MQTT协议中有三种身份,分别为发布者、服务器以及订阅者,消息的发布者和订阅者可以都为客户端,消息代理是服务器。MQTT会构建底层网络传输,它将建立客户端到服务器的连接,提供两者之间一个有序的、无损的以及基于字节流的双向传输。对于一个使用MQTT协议的应用程序或者客户端而言,它总是建立到服务器的网络连接,客户端可以发布其它客户端可能会订阅的信息,或者订阅其它客户端发布的消息或者退订或删除应用程序的消息,或者断开与服务器的连接等。
针对每个客户端,MQTT服务器需要为每个客户端分别单独推送消息,当终端数量过多时,逐一为每个客户端单独推送消息会导致MQTT服务器负载过大,影响MQTT服务器的性能。
示例性的,如图1所示,本申请实施例提供一种基于MQTT的消息推送方法,该方法的执行主体可以为服务器,其中,该服务器可以是独立的服务器,也可以是由多个服务器组成的服务器集群,而且,该服务器可以是能够进行消息推送的服务器,如能够进行消息推送的MQTT服务器。该基于MQTT的消息推送方法具体可以包括以下步骤S101至S104:
在S101中,获取第一终端发起的MQTT服务请求。
具体来讲,第一终端进行完缓存登录之后,发送MQTT服务请求,MQTT服务请求可以是订阅消息的请求,或者是发布消息的请求。该MQTT服务请求中至少携带用户标识、应用标识、终端标识以及广播标识等信息中的至少一者。用户标识可以为用户名、手机号等,应用标识可以为应用的唯一标识(APP ID)、终端标识可以为终端生产编号等,广播标识可以为群组名称、直播房间号等。
在S102中,确定与MQTT服务请求对应的服务主题类型。
具体来讲,对于每一个终端或用户而言,可以预先绑定用户和服务主题类型的关系,在接收到MQTT服务请求之后,可以基于MQTT服务请求中的标识信息确定对应的服务主题类型。服务主题类型可以为多终端服务主题类型以及指定终端服务主题类型,多终端服务主题类型至少可以包括同一用户的多个终端服务主题类型以及不同用户的多个终端服务主题类型。
在S103中,根据服务主题类型确定与MQTT服务请求对应的至少一个目标终端。
具体来讲,对应于服务主题类型的不同,目标终端可以为指定的一个或多个终端,或者同一用户的多个终端,或者不同用户的各个终端。对于同一用户的多个终端,可以是同一类型的多个终端,也可以为不同类型的多个终端,如将同一用户的手机、电脑以及平板等作为目标终端。对于不同用户的各个终端,可以是每个用户对应一个终端作为目标终端,也可以是每个用户对应的多个终端都可以作为目标终端。
在S104中,以目标传输方式向各目标终端推送消息,以目标传输方式单次推送消息时,各目标终端均能接收到消息。
具体来讲,目标传输方式包括但不限于组播或广播的方式,以组播或广播的方式推送消息时,在单次推送消息时,各目标终端均能接收到消息。
由以上本申请实施例提供的技术方案可见,获取第一终端发起的MQTT服务请求,然后确定与MQTT服务请求对应的服务主题类型,根据服务主题类型确定与MQTT服务请求对应的至少一个目标终端。以目标传输方式向各目标终端推送消息,以目标传输方式单次推送消息时,各目标终端均能接收到消息。因此,通过本申请实施例提供的技术方案,在确定目标终端之后,在单次推送消息时,各个目标终端均能接收到消息,避免了单独为各个终端推送消息而造成服务器负载过大的问题,MQTT服务器的性能不会受到太大的影响。
此外,通过提供服务主题类型,用户可以订阅满足个人需求的服务主题类型,通过自己订阅的服务主题类型向各个目标终端推送消息,提升了用户体验感。
在一种可能的实现方式中,本申请实施例还提供了一种对多终端服务主题类型中的各个终端的登录管理的方式,如对同类型终端同时登录时互踢。具体是在步骤是S101之前,该方法还包括:
控制处于登录状态且与第一终端同类型的第二终端退出登录。
具体的,与第一终端同类型的第二终端可以同为手机、电脑或者平板等,第二终端可以为异地登录,也可以和第一终端在同地登录。
在一种可能的实现方式中,本申请实施例还提供了一种对多终端服务主题类型中的各个终端的状态进行同步的方式,具体是在步骤S104之前,该方法还包括:
在第一终端的状态发生变化的情况下,发送第一终端的状态变化通知至第三终端。
具体的,第一终端的状态变化可以是第一终端由在线状态转为退出状态,或者第一终端由退出状态转为在线状态,在第一终端的状态发送变化时,可以发送状态变化通知至第三终端,便于第三终端实时掌握第一终端的状态,实现了在线管理。
进一步的,如图2所示,上述S102的实施方式多种多样,以下再提供一组可选的实施方式,具体参见S1021-S1022的处理。
在S1021中,获取MQTT服务请求中的标识信息。
具体来讲,在接收到MQTT服务请求之后,解析MQTT服务请求,从中提取标识信息,标识信息中包含了多个标识,如用户标识、应用标识、广播标识、终端类型标识等。
在S1022中,根据标识信息确定与标识信息对应的服务主题类型。
具体来讲,S1022的具体处理方式可以多种多样,以下再提供一种可选的实施方式,S1022具体包括以下步骤:
基于OAuth 2验证标识信息中各标识的对应关系是否匹配。在标识信息中各标识的对应关系匹配的情况下,验证标识信息与来源终端的对应关系是否匹配。在标识信息与来源终端的对应关系匹配的情况下,将标识信息与各服务主题类型中的目标标识信息进行匹配,将匹配一致的目标标识信息对应的服务主题类型作为与标识信息对应的服务主题类型。
通过OAuth 2验证各标识信息中的各标识的对应关系是否匹配,保证了消息推送的安全性。如该标识信息中包含应用标识和用户标识,则基于OAuth2验证应用标识和用户标识的对应关系是不是匹配的,如果应用标识和用户标识的对应关系是匹配的,则验证用户标识以及应用标识和来源终端的对应关系是否匹配,来源终端指的预先与标识信息绑定的终端,如果该绑定的终端为第一终端,则用户标识以及应用标识和来源终端的对应关系均匹配,最后确定服务主题类型。
更进一步,将标识信息与各服务主题类型中的目标标识信息进行匹配,将匹配一致的目标标识信息对应的服务主题类型作为与标识信息对应的服务主题类型可以包括以下步骤:
在标识信息包括应用标识和用户标识的情况下,确定服务主题类型为同一用户的多终端服务主题类型,该服务主题类型用于向同一个用户的多个终端推送消息。在标识信息包括应用标识、用户标识和终端类型标识的情况下,确定服务主题类型为指定终端服务主题类型,该服务主题类型用于为用户指定的终端推送消息。在标识信息包括应用标识和广播标识的情况下,确定服务主题类型为不同用户的多终端服务主题类型,该服务主题类型用于向订阅广播的全体用户推送消息。
进一步的,还可以在标识信息中携带区分服务主题类型的标识,如标识信息中携带“user”标识,说明该服务主题类型为同一用户的多终端服务主题类,标识信息中携带“app”标识,说明该服务主题类型为指定终端服务主题类型,标识信息中携带“all”标识,说明服务主题类型为不同用户的多终端服务主题类型。
如表1所示的,本申请实施例提供的一种服务主题类型与标识信息的对照表。
表1:服务主题类型与标识信息的对照表
进一步的,如图3所示,上述S103的具体处理方式可以多种多样,以下再提供一种可选的实施方式,具体可以参见下述S1031-S1033的处理。
在S1031中,在服务主题类型为同一用户的多终端服务主题类型的情况下,确定与用户相关的所有的终端为目标终端。
在S1032中,在服务主题类型为不同用户的多终端服务主题类型的情况下,确定具有相同广播标识的终端为目标终端。
在S1033中,在服务主题类型为指定终端服务主题类型的情况下,确定指定终端为目标终端。
具体的,指定终端为用户指定的终端,如用户在MQTT服务请求中携带应用标识、用户标识以及终端类型标识(如手机),则确定指定终端为手机并作为目标终端。
由以上本申请实施例提供的技术方案可见,通过OAuth 2验证各标识信息中的各标识的对应关系是否匹配,保证了消息推送的安全性。此外,通过提供服务主题类型,用户可以订阅满足个人需求的服务主题类型,通过自己订阅的服务主题类型向各个目标终端推送消息,提升了用户体验感。
示例性的,如图4A和图4B所示,图4A示出本申请实施例提供的一种基于MQTT的消息推送系统的结构示意图,图4B示出本申请实施例提供一种基于MQTT的消息推送方法的线程示意图。
如图4A所示的,基于MQTT的消息推送系统包括客户端和服务器,服务器中包含MQTT代理模块,MQTT WEB服务模块,MQTT在线服务模块,MQTT认证模块、OAuth 2认证服务模块、MQTT消费模块和消息队列模块。
客户端向MQTT代理模块发起MQTT服务请求,MQTT代理模块接收MQTT服务请求,确定与MQTT服务器请求对应的服务主题类型,根据服务主题类型确定与MQTT服务请求对应的至少一个目标终端,以目标传输方式向客户端推送消息。通过MQTT WEB服务模块提供的http接口向MQTT WEB服务模块发起在线状态查询,MQTT在线服务模块从MQTT代理同步更新客户端在线状态并缓存,提供MQTT在线查询的内部接口,同时将在线状态变化发送到消息队列。MQTT认证模块用于为MQTT代理提供认证与订阅发布的授权服务,如验证标识信息与来源终端的对应关系匹配时,则认证成功,授权客户端进行消息发布或消息订阅。OAuth 2认证服务模块用于提供基于OAuth 2的标识信息(access_token)的校验服务。MQTT消费模块用于为消息队列的消费者服务,获取到第一终端的在线状态发生变化后,通知第三终端,其中,第一终端可以为用户辅端,第三终端可以为用户主端。
如图4B所示的,本申请实施例提供一种基于MQTT的消息推送方法,以同一用户的多终端服务主题类型为例,该用户具有终端:手机(作为第一终端)和电脑(作为第三终端),其中,手机作为辅端,电脑作为主端。该方法包括:
S401:手机进行缓存登录完成,向MQTT WEB服务模块发起在线状态查询。
S402:MQTT WEB服务模块向手机返回查询结果,并根据手机的终端类型标识以及用户标识判断该用户的同类型的终端是否已经在线或者异地登录。如果同类型的终端已经在线或者异地登录,则控制该同类型的终端退出登录。
S403:手机携带本终端的终端类型标识以及access_token向MQTT代理模块发起MQTT连接。
S404:MQTT代理模块向MQTT认证模块发起认证请求。
S405:MQTT认证模块通知OAuth 2认证服务模块校验access_token。
S406:OAuth 2认证服务模块向MQTT认证模块返回校验结果,其中,校验结果中包含应用标识和用户标识。
S407:MQTT认证模块将S406中的校验结果中的应用标识和用户标识与目标标识信息(应用标识和用户标识)进行匹配,并向MQTT代理模块返回匹配结果。如果校验结果中的应用标识和用户标识与目标标识信息比对一致,则匹配成功,否则匹配失败。
S408:MQTT代理模块根据MQTT认证模块向手机反馈连接结果。其中,若匹配成功,则返回连接成功,若匹配失败,则返回连接失败。
S409:手机连接成功后,MQTT代理模块向MQTT在线服务模块发起在线状态同步,MQTT在线服务模块将在线状态进行缓存。
S410:MQTT在线服务模块向消息队列同步手机的状态变化事件。状态变化事件指的是手机由未登录状态转为在线状态。
S411:MQTT消费模块从消息队列中获取状态变化事件。
S412:MQTT在线服务模块向MQTT代理模块反馈在线状态同步结果。
S413:MQTT消费模块判断如果是手机的状态发生变化,则向MQTT代理模块发送手机状态发生变化的通知。
S414:MQTT代理模块将手机状态发生变化的通知再发送至电脑。
S415:手机发起MQTT服务请求,该MQTT服务请求可以是主题订阅的请求,也可以是消息发布的请求。
S416:MQTT代理模块向MQTT认证模块发起授权请求。
S417:MQTT认证模块根据MQTT服务请求中的应用标识或用户标识或终端类型标识与请求主题中的目标标识信息(应用标识或用户标识或终端类型标识)进行比对。若比对一致,则授权成功,若比对不一致,则授权失败。
S418:MQTT认证模块向MQTT代理模块返回授权结果。
S419:MQTT代理模块向手机返回服务结果,服务结果包括消息订阅或消息发布结果。
由以上本申请实施例提供的技术方案可见,获取第一终端发起的MQTT服务请求,然后确定与MQTT服务请求对应的服务主题类型,根据服务主题类型确定与MQTT服务请求对应的至少一个目标终端。以目标传输方式向各目标终端推送消息,以目标传输方式单次推送消息时,各目标终端均能接收到消息。因此,通过本申请实施例提供的技术方案,在确定目标终端之后,在单次推送消息时,各个目标终端均能接收到消息,避免了单独为各个终端推送消息而造成服务器负载过大的问题,MQTT服务器的性能不会受到太大的影响。
通过OAuth 2验证各标识信息中的各标识的对应关系是否匹配,保证了消息推送的安全性。此外,通过提供服务主题类型,用户可以订阅满足个人需求的服务主题类型,通过自己订阅的服务主题类型向各个目标终端推送消息,提升了用户体验感。
对应上述实施例提供的基于MQTT的消息推送方法,基于相同的技术构思,本申请实施例还提供了一种基于MQTT的消息推送装置,图5为本申请实施例提供的基于MQTT的消息推送装置的模块组成示意图,该基于MQTT的消息推送装置用于执行图1至图4B描述的基于MQTT的消息推送方法,如图5所示,该基于MQTT的消息推送装置包括:获取模块501,第一确定模块502,第二确定模块503,推送模块504。
获取模块,用于获取第一终端发起的MQTT服务请求;
第一确定模块,用于确定与MQTT服务请求对应的服务主题类型;
第二确定模块,用于根据服务主题类型确定与MQTT服务请求对应的至少一个目标终端;
推送模块,用于以目标传输方式向各目标终端推送消息,以目标传输方式单次推送消息时,各目标终端均能接收到消息。
由以上本申请实施例提供的技术方案可见,获取第一终端发起的MQTT服务请求,然后确定与MQTT服务请求对应的服务主题类型,根据服务主题类型确定与MQTT服务请求对应的至少一个目标终端。以目标传输方式向各目标终端推送消息,以目标传输方式单次推送消息时,各目标终端均能接收到消息。因此,通过本申请实施例提供的技术方案,在确定目标终端之后,在单次推送消息时,各个目标终端均能接收到消息,避免了单独为各个终端推送消息而造成服务器负载过大的问题,MQTT服务器的性能不会受到太大的影响。
可选的,第一确定模块502包括获取单元和确定单元。
获取单元,用于获取MQTT服务请求中的标识信息;
确定单元,用于根据标识信息确定与标识信息对应的服务主题类型。
可选的,确定单元包括:
第一验证子单元,用于基于OAuth 2验证标识信息中各标识的对应关系是否匹配;
第二验证子单元,用于在标识信息中各标识的对应关系匹配的情况下,验证标识信息与来源终端的对应关系是否匹配;
匹配子单元,用于在标识信息与来源终端的对应关系匹配的情况下,将标识信息与各服务主题类型中的目标标识信息进行匹配,将匹配一致的目标标识信息对应的服务主题类型作为与标识信息对应的服务主题类型。
可选的,匹配子单元还用于在标识信息包括应用标识和用户标识的情况下,确定服务主题类型为同一用户的多终端服务主题类型。在标识信息包括应用标识、用户标识和终端类型标识的情况下,确定服务主题类型为指定终端类型。在标识信息包括应用标识和广播标识的情况下,确定服务主题类型为不同用户的多终端服务主题类型;
可选的,第二确定模块503包括:第一确定单元,第二确定单元和第三确定单元。
第一确定单元,用于在服务主题类型为同一用户的多终端服务主题类型的情况下,确定与用户相关的所有的终端为目标终端。第二确定单元,用于在服务主题类型为不同用户的多终端服务主题类型的情况下,确定具有相同广播标识的终端为目标终端。第三确定单元,用于在服务主题类型为指定终端服务主题类型的情况下,确定指定终端为目标终端。
可选的,推送模块504包括:
推送单元,用于以组播或广播传输方式向各目标终端推送消息。
可选的,该基于MQTT的消息推送装置还包括:
控制模块,用于控制处于登录状态且与第一终端同类型的第二终端退出登录。
可选的,该基于MQTT的消息推送装置还包括:
发送模块,用于在第一终端的状态发生变化的情况下,发送第一终端的状态变化通知至第三终端。
本申请实施例提供的基于MQTT的消息推送装置能够实现上述基于MQTT的消息推送方法对应的实施例中的各个过程,为避免重复,这里不再赘述。
需要说明的是,本申请实施例提供的基于MQTT的消息推送装置与本申请实施例提供的基于MQTT的消息推送方法基于同一发明构思,因此该实施例的具体实施可以参见前述基于MQTT的消息推送方法的实施,重复之处不再赘述。
对应上述实施例提供的基于MQTT的消息推送方法,基于相同的技术构思,本申请实施例还提供了一种电子设备,该电子设备用于执行上述的基于MQTT的消息推送方法,图6为实现本发明各个实施例的一种电子设备的结构示意图,如图6所示。电子设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上的处理器601和存储器602,存储器602中可以存储有一个或一个以上存储应用程序或数据。其中,存储器602可以是短暂存储或持久存储。存储在存储器602的应用程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括对电子设备中的一系列计算机可执行指令。更进一步地,处理器601可以设置为与存储器602通信,在电子设备上执行存储器602中的一系列计算机可执行指令。电子设备还可以包括一个或一个以上电源603,一个或一个以上有线或无线网络接口604,一个或一个以上输入输出接口605,一个或一个以上键盘606。
具体在本实施例中,电子设备包括有处理器、通信接口、存储器和通信总线;其中,处理器、通信接口以及存储器通过总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序,实现以下方法步骤:
获取第一终端发起的MQTT服务请求;
确定与MQTT服务请求对应的服务主题类型;
根据服务主题类型确定与MQTT服务请求对应的至少一个目标终端;
以目标传输方式向各目标终端推送消息,以目标传输方式单次推送消息时,各目标终端均能接收到消息。
本实施例中还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如下步骤:
获取第一终端发起的MQTT服务请求;
确定与MQTT服务请求对应的服务主题类型;
根据服务主题类型确定与MQTT服务请求对应的至少一个目标终端;
以目标传输方式向各目标终端推送消息,以目标传输方式单次推送消息时,各目标终端均能接收到消息。
本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,电子设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、装置或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种基于MQTT的消息推送方法,其特征在于,所述方法包括:
获取第一终端发起的MQTT服务请求;
确定与所述MQTT服务请求对应的服务主题类型;
根据所述服务主题类型确定与所述MQTT服务请求对应的至少一个目标终端;
以目标传输方式向各所述目标终端推送消息,以所述目标传输方式单次推送所述消息时,各所述目标终端均能接收到所述消息。
2.根据权利要求1所述的方法,其特征在于,所述确定与所述MQTT服务请求对应的服务主题类型包括:
获取所述MQTT服务请求中的标识信息;
根据所述标识信息确定与所述标识信息对应的服务主题类型。
3.根据权利要求2所述的方法,其特征在于,所述标识信息中包括多个标识,所述根据所述标识信息确定与所述标识信息对应的服务主题类型包括:
基于OAuth 2验证所述标识信息中各标识的对应关系是否匹配;
在所述标识信息中各标识的对应关系匹配的情况下,验证所述标识信息与来源终端的对应关系是否匹配;
在所述标识信息与所述来源终端的对应关系匹配的情况下,将所述标识信息与各服务主题类型中的目标标识信息进行匹配,将匹配一致的目标标识信息对应的服务主题类型作为与所述标识信息对应的服务主题类型。
4.根据权利要求3所述的方法,其特征在于,所述将所述标识信息与各服务主题类型中的目标标识信息进行匹配,将匹配一致的目标标识信息对应的服务主题类型作为与所述标识信息对应的服务主题类型包括:
在所述标识信息包括应用标识和用户标识的情况下,确定服务主题类型为同一用户的多终端服务主题类型;
在所述标识信息包括应用标识、用户标识和终端类型标识的情况下,确定服务主题类型为指定终端服务主题类型;
在所述标识信息包括应用标识和广播标识的情况下,确定服务主题类型为不同用户的多终端服务主题类型;
所述根据所述服务主题类型确定与所述MQTT服务请求对应的至少一个目标终端包括:
在所述服务主题类型为同一用户的多终端服务主题类型的情况下,确定与所述用户相关的所有的终端为所述目标终端;
在所述服务主题类型为不同用户的多终端服务主题类型的情况下,确定具有相同广播标识的终端为所述目标终端;
在所述服务主题类型为指定终端服务主题类型的情况下,确定指定终端为所述目标终端。
5.根据权利要求1所述的方法,其特征在于,所述以目标传输方式向各所述目标终端推送消息包括:
以组播或广播传输方式向各所述目标终端推送消息。
6.根据权利要求1所述的方法,其特征在于,在所述获取第一终端发起的MQTT服务请求之前,所述方法还包括:
控制处于登录状态且与所述第一终端同类型的第二终端退出登录。
7.根据权利要求1所述的方法,其特征在于,在所述以目标传输方式向各所述目标终端推送消息之前,所述方法还包括:
在所述第一终端的状态发生变化的情况下,发送第一终端的状态变化通知至第三终端。
8.一种基于MQTT的消息推送装置,其特征在于,所述装置包括:
获取模块,用于获取第一终端发起的MQTT服务请求;
第一确定模块,用于确定与所述MQTT服务请求对应的服务主题类型;
第二确定模块,用于根据所述服务主题类型确定与所述MQTT服务请求对应的至少一个目标终端;
推送模块,用于以目标传输方式向各所述目标终端推送消息,以所述目标传输方式单次推送所述消息时,各所述目标终端均能接收到所述消息。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线;其中,所述处理器、所述通信接口以及所述存储器通过总线完成相互间的通信;所述存储器,用于存放计算机程序;所述处理器,用于执行所述存储器上所存放的程序,实现如权利要求1-7任一项所述的基于MQTT的消息推送方法步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-7任一项所述的基于MQTT的消息推送方法步骤。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202110619705.1A CN114979097B (zh) | 2021-06-03 | 2021-06-03 | 基于mqtt的消息推送方法、装置及电子设备 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202110619705.1A CN114979097B (zh) | 2021-06-03 | 2021-06-03 | 基于mqtt的消息推送方法、装置及电子设备 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN114979097A true CN114979097A (zh) | 2022-08-30 |
| CN114979097B CN114979097B (zh) | 2023-07-21 |
Family
ID=82973453
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202110619705.1A Active CN114979097B (zh) | 2021-06-03 | 2021-06-03 | 基于mqtt的消息推送方法、装置及电子设备 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN114979097B (zh) |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN115914194A (zh) * | 2022-12-08 | 2023-04-04 | 浪潮工业互联网股份有限公司 | 一种物联网设备实时数据订阅方法、设备及介质 |
| CN116033011A (zh) * | 2023-03-31 | 2023-04-28 | 新云网科技集团股份有限公司 | 一种数据通信方法、装置、设备及存储介质 |
| CN116132929A (zh) * | 2022-12-29 | 2023-05-16 | 北京万集科技股份有限公司 | 车联网中的消息传输方法和系统、存储介质和电子装置 |
| CN116346899A (zh) * | 2023-01-03 | 2023-06-27 | 光大科技有限公司 | 一种消息推送处理方法及装置 |
Citations (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20140245183A1 (en) * | 2013-02-26 | 2014-08-28 | Google Inc. | Method for one-click subscribing to multiple channels of information on a single topic |
| US8856870B1 (en) * | 2011-01-03 | 2014-10-07 | Intellectual Ventures Fund 79 Llc | Methods, devices, and mediums associated with dynamic forum generation |
| CN105488154A (zh) * | 2015-11-28 | 2016-04-13 | 小米科技有限责任公司 | 主题应用推荐方法及装置 |
| US20170244657A1 (en) * | 2016-02-22 | 2017-08-24 | International Business Machines Corporation | Message delivery in a message system |
| CN107360030A (zh) * | 2017-07-14 | 2017-11-17 | 陕西科技大学 | 一种dali智能照明扩展系统及扩展方法 |
| CN110417884A (zh) * | 2019-07-23 | 2019-11-05 | 腾讯科技(深圳)有限公司 | 一种消息推送方法、装置、设备及存储介质 |
| CN110601783A (zh) * | 2019-08-23 | 2019-12-20 | 贵州省广播电视信息网络股份有限公司 | 一种基于机顶盒的应急广播方法 |
| WO2020063048A1 (zh) * | 2018-09-29 | 2020-04-02 | 深圳前海达闼云端智能科技有限公司 | Pon网络及其通讯方法,olt,mqtt-sn网关,onu及mqtt服务器 |
| CN111865754A (zh) * | 2019-04-30 | 2020-10-30 | 桂林电子科技大学 | 一种基于mqtt的远程监控方法及系统 |
| US10833881B1 (en) * | 2017-11-06 | 2020-11-10 | Amazon Technologies, Inc. | Distributing publication messages to devices |
| CN112422544A (zh) * | 2020-11-09 | 2021-02-26 | 深圳市华昊软件有限公司 | 基于mqtt通讯协议的机房设备信息监控系统 |
| CN112788128A (zh) * | 2020-12-31 | 2021-05-11 | 青岛海尔科技有限公司 | 业务信息的推送方法、装置、存储介质及电子装置 |
-
2021
- 2021-06-03 CN CN202110619705.1A patent/CN114979097B/zh active Active
Patent Citations (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8856870B1 (en) * | 2011-01-03 | 2014-10-07 | Intellectual Ventures Fund 79 Llc | Methods, devices, and mediums associated with dynamic forum generation |
| US20140245183A1 (en) * | 2013-02-26 | 2014-08-28 | Google Inc. | Method for one-click subscribing to multiple channels of information on a single topic |
| CN105488154A (zh) * | 2015-11-28 | 2016-04-13 | 小米科技有限责任公司 | 主题应用推荐方法及装置 |
| US20170244657A1 (en) * | 2016-02-22 | 2017-08-24 | International Business Machines Corporation | Message delivery in a message system |
| CN107360030A (zh) * | 2017-07-14 | 2017-11-17 | 陕西科技大学 | 一种dali智能照明扩展系统及扩展方法 |
| US10833881B1 (en) * | 2017-11-06 | 2020-11-10 | Amazon Technologies, Inc. | Distributing publication messages to devices |
| WO2020063048A1 (zh) * | 2018-09-29 | 2020-04-02 | 深圳前海达闼云端智能科技有限公司 | Pon网络及其通讯方法,olt,mqtt-sn网关,onu及mqtt服务器 |
| CN111865754A (zh) * | 2019-04-30 | 2020-10-30 | 桂林电子科技大学 | 一种基于mqtt的远程监控方法及系统 |
| CN110417884A (zh) * | 2019-07-23 | 2019-11-05 | 腾讯科技(深圳)有限公司 | 一种消息推送方法、装置、设备及存储介质 |
| CN110601783A (zh) * | 2019-08-23 | 2019-12-20 | 贵州省广播电视信息网络股份有限公司 | 一种基于机顶盒的应急广播方法 |
| CN112422544A (zh) * | 2020-11-09 | 2021-02-26 | 深圳市华昊软件有限公司 | 基于mqtt通讯协议的机房设备信息监控系统 |
| CN112788128A (zh) * | 2020-12-31 | 2021-05-11 | 青岛海尔科技有限公司 | 业务信息的推送方法、装置、存储介质及电子装置 |
Non-Patent Citations (1)
| Title |
|---|
| 张玉杰;刘丽;冯春倩;张婷婷;: "基于MQTT的物联网系统文件传输方法的实现", 陕西科技大学学报 * |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN115914194A (zh) * | 2022-12-08 | 2023-04-04 | 浪潮工业互联网股份有限公司 | 一种物联网设备实时数据订阅方法、设备及介质 |
| CN116132929A (zh) * | 2022-12-29 | 2023-05-16 | 北京万集科技股份有限公司 | 车联网中的消息传输方法和系统、存储介质和电子装置 |
| CN116346899A (zh) * | 2023-01-03 | 2023-06-27 | 光大科技有限公司 | 一种消息推送处理方法及装置 |
| CN116033011A (zh) * | 2023-03-31 | 2023-04-28 | 新云网科技集团股份有限公司 | 一种数据通信方法、装置、设备及存储介质 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN114979097B (zh) | 2023-07-21 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11153290B2 (en) | Advanced security protocol for broadcasting and synchronizing shared folders over local area network | |
| CN114979097B (zh) | 基于mqtt的消息推送方法、装置及电子设备 | |
| US8751639B2 (en) | Event queuing and distribution system | |
| US20200067903A1 (en) | Integration of Publish-Subscribe Messaging with Authentication Tokens | |
| KR102208935B1 (ko) | 데이터 교환을 위한 컨텍스트를 설정하는 http 프로토콜을 통한 메시징 api | |
| US10291607B1 (en) | Providing real-time events to applications | |
| CN108833521A (zh) | 消息推送方法、装置、系统、计算机设备和存储介质 | |
| US9172765B2 (en) | Polling-based secure network message notification system and method with performance enhancing features | |
| CN111901230B (zh) | 一种支持设备接入验证的物联网网关、系统和设备接入验证的方法 | |
| CN108777625A (zh) | 签名的验证方法、装置和系统、存储介质、电子装置 | |
| CN110830564A (zh) | Cdn调度方法、装置、系统及计算机可读存储介质 | |
| CN113220435A (zh) | 任务处理方法及相关产品 | |
| WO2013060210A1 (zh) | 网络资源下载信息的分享控制系统和方法 | |
| TW201242315A (en) | Providing a witness service | |
| CN114338063B (zh) | 消息队列系统、业务处理方法及计算机可读存储介质 | |
| US10659443B2 (en) | Methods and apparatus for obtaining a scoped token | |
| CN114338574B (zh) | 一种即时通讯方法、管理节点及系统 | |
| CN111212135A (zh) | 消息订阅方法、装置、系统、电子设备及存储介质 | |
| US20180241691A1 (en) | Access control for message channels in a messaging system | |
| US10015230B1 (en) | Copying and pasting among networked devices | |
| US10346366B1 (en) | Management of a data processing pipeline | |
| CN113966602A (zh) | 区块链中区块的分布式存储 | |
| CN116781764A (zh) | 长连接的任务执行方法、装置及相关设备 | |
| CN114615315A (zh) | 线上会话的通讯方法、装置、设备及存储介质 | |
| CN114531946A (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 | ||
| GR01 | Patent grant | ||
| GR01 | Patent grant |