CN104836723B - 基于mqtt主题订阅机制的通信方法以及接入网关 - Google Patents
基于mqtt主题订阅机制的通信方法以及接入网关 Download PDFInfo
- Publication number
- CN104836723B CN104836723B CN201510148432.1A CN201510148432A CN104836723B CN 104836723 B CN104836723 B CN 104836723B CN 201510148432 A CN201510148432 A CN 201510148432A CN 104836723 B CN104836723 B CN 104836723B
- Authority
- CN
- China
- Prior art keywords
- access gateway
- user
- mqttserver
- message
- imservice
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/04—Real-time or near real-time messaging, e.g. instant messaging [IM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/66—Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/21—Monitoring or handling of messages
- H04L51/224—Monitoring or handling of messages providing notification on incoming messages, e.g. pushed notifications of received messages
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/40—Support for services or applications
- H04L65/401—Support for services or applications wherein the services involve a main real-time session and one or more additional parallel real-time or time sensitive sessions, e.g. white board sharing or spawning of a subconference
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/40—Support for services or applications
- H04L65/4061—Push-to services, e.g. push-to-talk or push-to-video
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种基于MQTT主题订阅机制的通信方法以及接入网关。其中,该方法包括:启动接入网关A与对应的接入网关B中的IMService、MQTTClientI、MQTTClientR、MQTTServer;第一用户在接入网关A上线,第二用户在接入网关B上线;基于接入网关A与接入网关B,第一用户与第二用户进行消息交互。通过本发明,解决了相关技术中分布式即时通信应用消息路由复杂的问题,可省去复杂的消息路由功能,消息可基于服务器维护的订阅关系与基于该订阅关系的消息转发,自行实现消息路由功能。从而不需维护消息路由表,简化即时通信方案。
Description
技术领域
本发明涉及通讯领域,特别是涉及一种基于MQTT主题订阅机制的通信方法以及接入网关。
背景技术
即时通讯(Instant messaging,简称IM)是一个终端服务,允许两人或多人使用网路即时的传递文字讯息、档案、语音与视频交流。即时通讯按使用用途分为企业即时通讯和网站即时通讯,根据装载的对象又可分为手机即时通讯和PC即时通讯,手机即时通讯代表是短信,PC即时通讯代表是视频。
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和致动器(例如通过Twitter让房屋联网)的通信协议。
MQTT协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,它具有以下主要的几项特性:
1)使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合。
2)对负载内容屏蔽的消息传输。
3)使用TCP/IP提供网络连接。
4)有三种消息发布服务质量:
“至多一次”,消息发布完全依赖底层TCP/IP网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送;
“至少一次”,确保消息到达,但消息重复可能会发生;
“只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。
5)小型传输,开销很小(固定长度的头部是2字节),协议交换最小化,以降低网络流量。
6)使用Last Will和Testament特性通知有关各方客户端异常中断的机制。
现有技术中分布式即时通信的方案,例如XMPP(可扩展消息处理现场协议),即时通信的机制为:客户端连接至网关,有一个单独的路由服务(O)用于维护客户端与网关的连接关系(即哪个用户连接的哪个服务器)。两个网关上的用户如果需要通信,则消息发送方(User1)所在的网关(A),必须从路由服务(O)查询要收消息的用户(User2)在哪个网关(B)上,然后将消息转发至接收消息的网关(B),网关(B)将消息转发至接收消息的用户(User2)。
现有IM(InstantMessaging,即时通讯)即时通信方案大多比较复杂,特别是分布式系统中的消息路由,往往需要维护一张体积较大的消息路由表,并且还涉及到多服务器寻址等问题。路由表的动态更新,路由信息同步也是一个比较复杂的功能。
针对相关技术中分布式即时通信应用消息路由复杂的问题,目前尚未提出有效的解决方案。
发明内容
针对相关技术中分布式即时通信应用消息路由复杂的问题,本发明提供了一种基于MQTT主题订阅机制的通信方法以及接入网关,用以解决上述技术问题。
根据本发明的一个方面,本发明提供了一种接入网关,其中,该接入网关包括:业务处理模块IMService、内部客户端MQTTClientI、外部客户端MQTTClientR和服务端MQTTServer,其中,
IMService,用于向MQTTClientI注册事件通知,以使所述MQTTClientI接收到所述MQTTServer的消息时,通知所述IMService;还用于使所述MQTTClientI向所述MQTTServer订阅主题;还用于创建MQTTClientR,以使所述MQTTClientR与对应接入网关的MQTTServer连接,并订阅主题;
MQTTClientI,用于在接收到MQTTServer的消息时,通知所述IMService;还用于向MQTTServer订阅主题,主题消息包括接入网关的用户User或者其他接入网关发送至所述接入网关的消息;
MQTTClientR,用于与对应接入网关的MQTTServer连接,并向该MQTTServer订阅主题;
MQTTServer,与User进行消息交互,为MQTTClientI和对应接入网关的MQTTClientR支持主题订阅机制。
根据本发明的另一方面,本发明还提供了一种基于MQTT主题订阅机制的通信方法,其中,该方法包括:启动接入网关A与对应的接入网关B中的IMService、MQTTClientI、MQTTClientR、MQTTServer;其中,MQTTClientI向同一接入网关的MQTTServer订阅主题,MQTTClientR与对应的接入网关的MQTTServer连接,并订阅主题;第一用户在接入网关A上线,第二用户在接入网关B上线;基于接入网关A与接入网关B,第一用户与第二用户进行消息交互。
优选地,第一用户在接入网关A上线包括:第一用户连接接入网关A的MQTTServer,并订阅主题,主题消息包括接入网关A上全部与第一用户交互的消息;第一用户向所述MQTTServer上报用户上线消息,基于主题订阅机制,MQTTClientI接收该用户上线消息,然后通知IMService。
优选地,第二用户在接入网关B上线包括:第二用户连接接入网关B的MQTTServer,并订阅主题,主题消息包括接入网关B上全部与第二用户交互的消息;第二用户向所述MQTTServer上报用户上线消息,基于主题订阅机制,MQTTClientI接收该用户上线消息,然后通知IMService。
优选地,第一用户在接入网关A上线之后,还包括:接入网关A的IMService通过MQTTClientI向MQTTServer发布用户上线通知,基于主题订阅机制,接入网关B的MQTTClientR接收该用户上线通知,并通知接入网关B的IMService;接入网关B的IMService在接入网关B上查找与第一用户有业务往来的在线用户,之后执行以下步骤:
a)接入网关B的IMService调用MQTTClientR向接入网关A的MQTTServer订阅主题,主题消息包括在接入网关A上全部向所述在线用户的对话消息;
b)接入网关B的IMService调用MQTTClientI向MQTTServer发布用户上线推送消息,基于主题订阅机制,所述在线用户接收该用户上线推送消息;
c)接入网关B的IMService调用MQTTClientR向接入网关A的MQTTServer发布订阅通知,该订阅通知用于通知接入网关A的MQTTClientR在接入网关B的MQTTServer订阅主题,主题消息包括在接入网关A上全部向第一用户的对话。
优选地,基于接入网关A与接入网关B,第一用户与第二用户进行消息交互,包括:第二用户向接入网关B的MQTTServer发布对话消息;基于主题订阅机制,接入网关A的MQTTClientR接收接入网关B的MQTTServer转发的所述对话消息,所述MQTTClientR将该对话消息通知接入网关A的IMService;接入网关A的IMService调用MQTTClientI向MQTTServer发布所述对话消息,基于主题订阅机制,第一用户接收所述MQTTServer转发的所述对话消息。
优选地,所述方法还包括:同一接入网关上的两个用户,其中一个用户向该接入网关的MQTTServer发布对话消息,基于主题订阅机制,另一用户接收所述MQTTServer转发的该对话消息。
本发明有益效果如下:
本发明的技术方案基于MQTT的订阅/发布机制,通用多用户、多服务器间对一套MQTT Topic主题的订阅/发布,可省去复杂的消息路由功能,消息可基于服务器维护的订阅关系与基于该订阅关系的消息转发,自行实现消息路由功能。从而不需维护消息路由表,简化即时通信方案。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
图1是根据本发明实施例的接入网关的结构框图;
图2是根据本发明实施例的基于MQTT主题订阅机制的通信方法流程图;
图3是根据本发明实施例的接入网关启动流程的示意图;
图4是根据本发明实施例的接入网关停止流程的示意图;
图5是根据本发明实施例的用户上线流程的示意图;
图6是根据本发明实施例的用户间对话流程的示意图;
图7是根据本发明实施例的用户下线流程的示意图。
具体实施方式
为了解决相关技术中分布式即时通信应用消息路由复杂的问题,本发明提供了一种基于MQTT主题订阅机制的通信方法以及接入网关,以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定本发明。
实施例一
本实施例提供了一种接入网关,图1是根据本发明实施例的接入网关的结构框图,如图1所示,该接入网关包括:IMService(业务处理模块)、MQTTClientI(内部客户端)、MQTTClientR(外部客户端)和MQTTServer(服务端),其中,
IMService,是IM接入网关的业务处理模块,负责IM接入网关的核心业务调度,包括功能:用户关系管理、接入网关与MQTTClientR映射管理、MQTTClientI与MQTTClientR调用等。
其功能是:用于向MQTTClientI注册事件通知,以使所述MQTTClientI接收到所述MQTTServer的消息时,通知所述IMService;还用于使所述MQTTClientI向所述MQTTServer订阅主题;还用于创建MQTTClientR,以使所述MQTTClientR与对应接入网关的MQTTServer连接,并订阅主题。
MQTTClientI,是IM接入网关内部通信的支持MQTT标准协议的客户端,用于IMService发送或接收本接入网关的消息。一个IM接入网关只有一个MQTTClientI;
其功能是:用于在接收到MQTTServer的消息时,通知所述IMService;还用于向MQTTServer订阅主题,主题消息包括接入网关的用户User或者其他接入网关发送至所述接入网关的消息。
MQTTClientR,是IM接入网关外部通信的支持MQTT标准协议的客户端,用于IMService发送或接收其他接入网关的消息。一个IM接入网关会有多个MQTTClientR;
其功能是:用于与对应接入网关的MQTTServer连接,并向该MQTTServer订阅主题。
MQTTServer,是支持MQTT标准协议的服务端,用于支持订阅发布机制。
其功能是:与User进行消息交互,为MQTTClientI和对应接入网关的MQTTClientR支持主题订阅机制。
实施例二
本实施例提供了一种基于MQTT主题订阅机制的通信方法,图2是根据本发明实施例的基于MQTT主题订阅机制的通信方法流程图,如图2所示,该方法包括:
步骤S202,启动接入网关A与对应的接入网关B中的IMService、MQTTClientI、MQTTClientR、MQTTServer;其中,MQTTClientI向同一接入网关的MQTTServer订阅主题,MQTTClientR与对应的接入网关的MQTTServer连接,并订阅主题;
步骤S204,第一用户在接入网关A上线,第二用户在接入网关B上线;
步骤S206,基于接入网关A与接入网关B,第一用户与第二用户进行消息交互。
通过上述方法,可省去复杂的消息路由功能,消息可基于服务器维护的订阅关系与基于该订阅关系的消息转发,自行实现消息路由功能。从而不需维护消息路由表,简化即时通信方案。
在步骤S204中,第一用户在接入网关A上线包括:第一用户连接接入网关A的MQTTServer,并订阅主题,主题消息包括接入网关A上全部与第一用户交互的消息;第一用户向所述MQTTServer上报用户上线消息,基于主题订阅机制,MQTTClientI接收该用户上线消息,然后通知IMService。
第二用户在接入网关B上线包括:第二用户连接接入网关B的MQTTServer,并订阅主题,主题消息包括接入网关B上全部与第二用户交互的消息;第二用户向所述MQTTServer上报用户上线消息,基于主题订阅机制,MQTTClientI接收该用户上线消息,然后通知IMService。
第一用户在接入网关A上线之后,还包括:接入网关A的IMService通过MQTTClientI向MQTTServer发布用户上线通知,基于主题订阅机制,接入网关B的MQTTClientR接收该用户上线通知,并通知接入网关B的IMService;接入网关B的IMService在接入网关B上查找与第一用户有业务往来的在线用户,之后执行以下步骤:
a)接入网关B的IMService调用MQTTClientR向接入网关A的MQTTServer订阅主题,主题消息包括在接入网关A上全部向所述在线用户的对话消息;
b)接入网关B的IMService调用MQTTClientI向MQTTServer发布用户上线推送消息,基于主题订阅机制,所述在线用户接收该用户上线推送消息;
c)接入网关B的IMService调用MQTTClientR向接入网关A的MQTTServer发布订阅通知,该订阅通知用于通知接入网关A的MQTTClientR在接入网关B的MQTTServer订阅主题,主题消息包括在接入网关A上全部向第一用户的对话。
在步骤S206中,基于接入网关A与接入网关B,第一用户与第二用户进行消息交互,包括:第二用户向接入网关B的MQTTServer发布对话消息;基于主题订阅机制,接入网关A的MQTTClientR接收接入网关B的MQTTServer转发的所述对话消息,所述MQTTClientR将该对话消息通知接入网关A的IMService;接入网关A的IMService调用MQTTClientI向MQTTServer发布所述对话消息,基于主题订阅机制,第一用户接收所述MQTTServer转发的所述对话消息。
对于同一接入网关上的两个用户,其中一个用户向该接入网关的MQTTServer发布对话消息,基于主题订阅机制,另一用户接收所述MQTTServer转发的该对话消息。
在本实施例中,MQTT主题的订阅/发布机制基于Topic主题的,具有提下特点:
1)客户端只有订阅了某一Topic主题,才会收到其他客户端发布的该主题消息;
2)客户端发布了某一Topic主题消息,在线的全部订阅者都会收到该主题消息。
表1所示的是本分布式即时通信方法涉及到的基础主题Topic及对应的订阅者与发布者。
表1
下面通过优选实施例和附图,对本发明的技术方案进行详细介绍。
实施例三
图3是根据本发明实施例的接入网关启动流程的示意图,如图3所示,接入网关启动需要执行以下步骤(以接入网关A启动为例):
1.接入网关A的IMService向MQTTClientI注册事件通知,即MQTTClientI收到MQTTServer的消息时,即会以事件回调函数的形式通知IMService。
2.接入网关A的IMService调用MQTTClientI的函数接口,使MQTTClientI向MQTTServer订阅主题,该主题消息包括:用户或其他接入网关(例如接入网关B)发送至当前接入网关A的消息(Topic:IM/Push/AG/*,IM/Rpt/User/{UserID}/*)。
3.接入网关A的IMService根据预置的接入网关列表(假设接入网关规模固定,每个接入网关都会配置全部接入网关列表,接入网关列表记录的是每个网关与能够与其建立联系的其他网关的列表),循环创建MQTTClientR,用以连接其他接入网关(例如接入网关B),同时调用MQTTClientR的一系列接口来初始化MQTTClientR,主要包括以下几个步骤:
a)接入网关A的IMService向上述MQTTClientR注册事件通知,即MQTTClientR收到对应接入网关(例如接入网关B)的MQTTServer的消息时,即会以事件回调函数的形式通知该IMService;
b)接入网关A的IMService使上述MQTTClientR连接对应接入网关(例如接入网关B)的MQTTServer,并且订阅主题,该主题消息为接入网上报消息(Topic:IM/Rpt/AG/*);
c)接入网关A的IMService通过上述MQTTClientR向对应接入网关(例如接入网关B)的MQTTServer发布接入网关A上线消息(Topic:IM/Push/AG/Online)。
4.上述MQTTClientR的对应接入网关(例如接入网关B)的MQTTClientI通过订阅主题,接收到接入网关A的接入网关A上线消息后,通过事件通知回调函数的形式(接入网关B启动时已注册,可参考该流程)通知接入网关B的IMService。
5.接入网关B的IMService接收到接入网关A上线通知后,创建MQTTClientR,用以连接接入网关A,并且初始化该MQTTClientR(初始化过程参考步骤3中的初始化MQTTClientR步骤)。
实施例四
图4是根据本发明实施例的接入网关停止流程的示意图,如图4所示,接入网关停止需要执行以下步骤(以接入网关A启动为例):
1.接入网关A的IMService遍历当前接入网关A的全部MQTTClientR,调用MQTTClientR的一系列接口来反初始化MQTTClientR,主要包括以下几个步骤:
a)接入网关A的IMService使上述MQTTClientR向对应接入网关(例如接入网关B)的MQTTServer取消订阅主题,即取消订阅接入网上报消息(Topic:IM/Rpt/AG/*);
b)接入网关A的IMService通过上述MQTTClientR向对应接入网关(例如接入网关B)的MQTTServer发布接入网关A下线消息(Topic:IM/Push/AG/Offline);
c)接入网关A的IMService使上述MQTTClientR向对应接入网关(例如接入网关B)的MQTTServer断开连接;
d)接入网关A的IMService释放销毁上述MQTTClientR。
2.接入网关B的IMService接收到接入网关A下线通知后,也会对接入网关B上的(与接入网关A连接的)MQTTClientR进行反初始化(反初始化过程可参考步骤1中的反初始化MQTTClientR步骤)。
实施例五
图5是根据本发明实施例的用户上线流程的示意图,如图5所示,用户上线需要执行以下步骤(假设User2已经在接入网关A上线,User3已经在接入网关B上线,现以User1在接入网关A上线为例):
1.User1连接接入网关A的MQTTServer后,订阅主题,主题消息包括接入网关A上全部与User1交互的消息(Topic:IM/Talk/User/{UserID}/*,UserID=User1),以及全部向User1推送的消息(Topic:IM/Push/User/{UserID}/*,UserID=User1)。
2.User1向接入网关A的MQTTServer上报用户上线消息(Topic:IM/Rpt/User/{UserID}/Online,UserID=User1),此时,接入网关A的MQTTClientI会自动收到User1的用户上线消息(根据订阅转发原则,接入网关A启动时已订阅,详见接入网关启动流程)。
3.接入网关A的MQTTClientI接收到用户上线消息后,通过事件通知回调函数的形式(接入网关A启动时已注册,可参考接入网关启动流程)通知接入网关A的IMService。
4.接入网关A的IMService通过MQTTClientI向MQTTServer发布用户上线通知,该用户上线通知是用来通知其他接入网关(例如接入网关B)(Topic:IM/Rpt/AG/UserOnline),接入网关B的MQTTClientR会自动收到该用户上线通知(接入网关A启动时已订阅。接入网关B的后续处理见步骤6)。
5.接入网关A的IMService查找与User1关联的当前接入网关(A)在线用户(例如:User2);其中,关联用户是指在当前接入网关上与User1有业务往来的用户,用户之间的关联关系可由业务实现者自行设计。
接入网关A的IMService通过调用MQTTClientI的函数接口来向MQTTServer发布用户上线推送消息(Topic:IM/Push/User/{UserID}/UserOnline,UserID=User2),此时,User2根据订阅关系会自动接收到上述用户上线推送消息(User2启动时已订阅,可参考User1上线步骤1)。
6.接入网关B的MQTTClientR接收到用户上线通知后,通过事件通知回调函数的形式通知接入网关B的IMService。
7.接入网关B的IMService查找与User1关联的当前接入网关(B)在线用户(例如:User3),之后:
a)接入网关B的IMService通过调用接入网关B的MQTTClientR的函数接口,向接入网关A的MQTTServer订阅主题,主题消息包括在接入网关A上全部向User3的对话消息(Topic:IM/Talk/User/{UserID}/*,UserID=User3);
b)接入网关B的IMService通过调用接入网关B的MQTTClientI的函数接口,向MQTTServer发布用户上线推送消息(Topic:IM/Push/User/{UserID}/UserOnline,UserID=User3),此时,User3根据订阅关系会自动收到上述用户上线推送消息(User3启动时已订阅,可参考User1上线步骤1);
c)接入网关B的IMService通过调用接入网关B的MQTTClientR的函数接口,向接入网关A的MQTTServer发布订阅通知(Topic:IM/Push/AG/Subscribe),该通知用于通知接入网关A,使接入网关A的MQTTClientR在接入网关B的MQTTServer订阅主题,主题消息包括在接入网关A上全部向User1的对话(Topic:IM/Talk/User/{UserID}/*,UserID=User1)。
实施例六
基于以上用户上线流程完成后,接入网关间已经完全建立了User1与关联用户User2、User3的消息订阅关系,此时User1即可同User2或User3对话。图6是根据本发明实施例的用户间对话流程的示意图,如图6所示:
(一)同一个接入网关上的用户间对话需要执行以下步骤(以User2对User1说话为例):
1.User2向接入网关A的MQTTServer发布对话消息(Topic:IM/Talk/User/{UserID}/Text,UserID=User1)。
2.User1自动接收到上述MQTTServer转发的User2对User1的对话消息(User1用户上线时订阅,参见用户上线流程步骤1)。
(二)不在同一个接入网关上的用户间对话需要执行以下步骤(以User3对User1说话为例):
1.User3向接入网B的MQTTServer发布对话消息(Topic:IM/Talk/User/{UserID}/Text,UserID=User1)。
2.接入网关A的MQTTClientR自动接收到接入网关B的MQTTServer转发的User3发布的对User1的对话消息(User1用户上线时订阅,参见用户上线流程步骤7.c),然后上述MQTTClientR会将User3对User1的对话消息以事件通知回调函数的形式通知接入网关A的IMService。
3.接入网关A的IMService通过调用接入网关A的MQTTClientI的函数接口向接入网关A的MQTTServer发布User3对User1的对话消息((Topic:IM/Talk/User/{UserID}/Text,UserID=User1)。
4.User1自动接收到接入网关A的MQTTServer转发的User3对User1的对话消息(User1用户上线时订阅,参见用户上线流程步骤1)。
实施例七
图7是根据本发明实施例的用户下线流程的示意图,如图7所示:用户下线需要执行以下步骤(假设User2在接入网关A在线,User3在接入网关B在线,User1在接入网关A在线,以User1下线为例):
1.User1向接入网关A的MQTTServer发布用户下线消息(Topic:IM/Rpt/User/{UserID}/Offline,UserID=User1)。
2.接入网关A的MQTTClientI会自动接收到上述用户的下线消息(接入网关A启动时已订阅,参见接入网关启动流程步骤2),此时MQTTClientI会以事件通知回调函数的形式通知接入网关A的IMService。
3.接入网关A的IMService以函数调用的形式使MQTTClientI向MQTTServer发布网关的用户下线消息(Topic:IM/Rpt/AG/UserOffline,UserID=User1),此时接入网关B的MQTTClientR会自动接收到该消息(接入网关B启动时已订阅,可参考接入网关启动流程步骤3.b或5。接入网关B的后续处理见步骤5)。
4.接入网关A的IMService查找与User1关联(该关联关系由业务实现者自行设计)的当前接入网关在线用户(例如:User2);通过调用MQTTClientI的函数接口来向MQTTServer发布用户下线推送消息(Topic:IM/Push/User/{UserID}/UserOffline,UserID=User2),此时,User2根据订阅关系会自动接收到上述用户下线推送消息(User2启动时已订阅,可参考User1上线步骤1)。
5.接入网关B的MQTTClientR接收到用户下线消息后,通过事件通知回调函数的形式通知接入网关B的IMService。
6.接入网关B的IMService查找与User1关联(该关联关系由业务实现者自行设计)的当前接入网关在线用户(例如:User3),之后:
a)接入网关B的IMService通过调用接入网关B的MQTTClientR的函数接口,向接入网关A的MQTTServer取消订阅全部向User3的对话(Topic:IM/Talk/User/{UserID}/*,UserID=User3);
b)接入网关B的IMService通过调用接入网关B的MQTTClientI的函数接口,向接入网关B的MQTTServer发布用户下线推送消息(Topic:IM/Push/User/{UserID}/UserOnline,UserID=User3),此时,User3根据订阅关系会自动接收到上述用户下线推送消息(User3启动时已订阅,可参考User1上线步骤1);
c)接入网关B的IMService通过调用接入网关B的MQTTClientR的函数接口,向接入网关A的MQTTServer发布取消订阅通知(Topic:IM/Push/AG/Unsubscribe),该通知用于通知接入网关A,使接入网关A的MQTTClientR在接入网关B的MQTTServer上取消订阅全部向User1的对话消息(Topic:IM/Talk/User/{UserID}/*,UserID=User1)。
在上述实施例三至七中,使用了以下交互类型术语:
【接口调用】代码级函数调用,用于IMService对MQTTClientI或MQTTClientR的接口调用。
【事件通知】代码级函数调用,用于MQTTClientI或MQTTClientR收到消息后,对IMService的事件通知。
【连接】MQTT协议连接过程。
【断开连接】MQTT协议断开连接过程。
【订阅】MQTT协议消息订阅过程。
【发布】MQTT协议消息发布过程。
【订阅转发】MQTTServer收到MQTTClientI或MQTTClientR发布的消息,对订阅该消息主题的订阅者的消息转发。
本发明技术方案主要包括3大部分:第一,发明支撑主体IM接入网关内部结构;第二,基于MQTT订阅发布机制用于即时通信的一整套Topic主题定义,及各参与者对本套主题的订阅发布关系;第三,基于定义的Topic主题,各参与者实现即时通信的完整业务处理流程。通过本发明,解决了相关技术中分布式即时通信应用消息路由复杂的问题,省去了复杂的消息路由功能,消息可基于服务器维护的订阅关系与基于该订阅关系的消息转发,自行实现消息路由功能。从而不需维护消息路由表,简化即时通信方案。
尽管为示例目的,已经公开了本发明的优选实施例,本领域的技术人员将意识到各种改进、增加和取代也是可能的,因此,本发明的范围应当不限于上述实施例。
Claims (3)
1.一种接入网关,其特征在于,所述接入网关包括:业务处理模块IMService、内部客户端MQTTClientI、外部客户端MQTTClientR和服务端MQTTServer,其中,
IMService,用于向MQTTClientI注册事件通知,以使所述MQTTClientI接收到所述MQTTServer的消息时,通知所述IMService;还用于调用所述MQTTClientI向所述MQTTServer订阅主题;还用于创建MQTTClientR,以调用所述MQTTClientR与对应接入网关的MQTTServer连接,并订阅主题;
MQTTClientI,用于在接收到MQTTServer的消息时,通知所述IMService;还用于向MQTTServer订阅主题,主题消息包括接入网关的用户User或者其他接入网关发送至所述接入网关的消息;
MQTTClientR,用于与对应接入网关的MQTTServer连接,并向该MQTTServer订阅主题;
MQTTServer,与User进行消息交互,为MQTTClientI和对应接入网关的MQTTClientR支持主题订阅机制。
2.一种基于MQTT主题订阅机制的通信方法,其特征在于,所述方法包括:
启动接入网关A与对应的接入网关B中的IMService、MQTTClientI、MQTTClientR、MQTTServer;其中,MQTTClientI向同一接入网关的MQTTServer订阅主题,MQTTClientR与对应的接入网关的MQTTServer连接,并订阅主题;
第一用户在接入网关A上线,第二用户在接入网关B上线;
基于接入网关A与接入网关B,第一用户与第二用户进行消息交互;
第一用户在接入网关A上线包括:
第一用户连接接入网关A的MQTTServer,并订阅主题,主题消息包括接入网关A上全部与第一用户交互的消息;
第一用户向所述接入网关A的MQTTServer上报用户上线消息,基于主题订阅机制,接入网关A的MQTTClientI接收该用户上线消息,然后通知接入网关A的IMService;
第二用户在接入网关B上线包括:
第二用户连接接入网关B的MQTTServer,并订阅主题,主题消息包括接入网关B上全部与第二用户交互的消息;
第二用户向所述接入网关B的MQTTServer上报用户上线消息,基于主题订阅机制,接入网关B的MQTTClientI接收该用户上线消息,然后通知接入网关B的IMService;
第一用户在接入网关A上线之后,还包括:
接入网关A的IMService通过MQTTClientI向MQTTServer发布用户上线通知,基于主题订阅机制,接入网关B的MQTTClientR接收该用户上线通知,并通知接入网关B的IMService;
接入网关B的IMService在接入网关B上查找与第一用户有业务往来的在线用户,之后执行以下步骤:
a)接入网关B的IMService调用MQTTClientR向接入网关A的MQTTServer订阅主题,主题消息包括在接入网关A上全部向所述与第一用户有业务往来的在线用户的对话消息;
b)接入网关B的IMService调用MQTTClientI向MQTTServer发布用户上线推送消息,基于主题订阅机制,所述与第一用户有业务往来的在线用户接收该用户上线推送消息;
c)接入网关B的IMService调用MQTTClientR向接入网关A的MQTTServer发布订阅通知,该订阅通知用于通知接入网关A的MQTTClientR在接入网关B的MQTTServer订阅主题,主题消息包括在接入网关A上全部向第一用户的对话;
基于接入网关A与接入网关B,第一用户与第二用户进行消息交互,包括:
第二用户向接入网关B的MQTTServer发布对话消息;
基于主题订阅机制,接入网关A的MQTTClientR接收接入网关B的MQTTServer转发的所述对话消息,所述MQTTClientR将该对话消息通知接入网关A的IMService;
接入网关A的IMService调用MQTTClientI向MQTTServer发布所述对话消息,基于主题订阅机制,第一用户接收所述MQTTServer转发的所述对话消息。
3.如权利要求2所述的方法,其特征在于,所述方法还包括:
同一接入网关上的两个用户,其中一个用户向该接入网关的MQTTServer发布对话消息,基于主题订阅机制,另一用户接收所述MQTTServer转发的该对话消息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510148432.1A CN104836723B (zh) | 2015-03-31 | 2015-03-31 | 基于mqtt主题订阅机制的通信方法以及接入网关 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510148432.1A CN104836723B (zh) | 2015-03-31 | 2015-03-31 | 基于mqtt主题订阅机制的通信方法以及接入网关 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104836723A CN104836723A (zh) | 2015-08-12 |
CN104836723B true CN104836723B (zh) | 2020-07-31 |
Family
ID=53814368
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510148432.1A Active CN104836723B (zh) | 2015-03-31 | 2015-03-31 | 基于mqtt主题订阅机制的通信方法以及接入网关 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104836723B (zh) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9385976B1 (en) * | 2015-10-09 | 2016-07-05 | Machine Zone, Inc. | Systems and methods for storing message data |
CN108494848B (zh) * | 2015-10-30 | 2020-09-22 | 大连大学 | 基于mqtt的企业消息推送方法 |
CN106059892A (zh) * | 2016-05-17 | 2016-10-26 | 中国科学院沈阳计算技术研究所有限公司 | 一种用于融合通信系统的消息引擎 |
CN106101178A (zh) * | 2016-05-30 | 2016-11-09 | 海尔优家智能科技(北京)有限公司 | 一种订阅消息分发、接收方法、装置及相关系统 |
CN106130882B (zh) * | 2016-07-13 | 2019-04-30 | 北京百度网讯科技有限公司 | 用于传输消息的方法和装置 |
CN106656751A (zh) * | 2016-12-05 | 2017-05-10 | 北京中交兴路信息科技有限公司 | 一种数据通信的方法及装置 |
US10574619B2 (en) | 2017-01-02 | 2020-02-25 | International Business Machines Corporation | Cluster assisted MQTT client coverage for fat-pipe cloud applications |
CN108270995B (zh) * | 2017-01-03 | 2021-01-15 | 中国移动通信有限公司研究院 | 一种终端与视频监控设备之间的通信方法及系统 |
CN109391500B (zh) * | 2017-08-11 | 2021-08-31 | 华为技术有限公司 | 一种配置管理方法、装置及设备 |
CN108023807A (zh) * | 2017-11-02 | 2018-05-11 | 东软集团股份有限公司 | 即时通信方法、服务器和消息中间件 |
CN108200184A (zh) * | 2018-01-12 | 2018-06-22 | 郑州云海信息技术有限公司 | 一种分布式Web即时消息发送系统和方法 |
CN110099078B (zh) * | 2018-01-29 | 2022-02-25 | 阿里巴巴集团控股有限公司 | 设备间通信、消息同步方法、装置、设备和存储介质 |
CN108429665B (zh) * | 2018-03-22 | 2020-12-15 | 四川长虹电器股份有限公司 | 一种并发通信传输数据的方法 |
CO2018005389A1 (es) * | 2018-05-23 | 2018-11-30 | Inversiones Tecnologicas De America Sa | Bridge multi-biometrico iot |
CN109274730B (zh) * | 2018-09-04 | 2021-07-23 | 上海联寓智能科技有限公司 | 物联网系统、mqtt消息传输的优化方法及装置 |
CN109547333A (zh) * | 2018-12-19 | 2019-03-29 | 北京仁科互动网络技术有限公司 | 即时通信方法及装置 |
CN109872433B (zh) * | 2019-03-08 | 2021-07-06 | 广州大学华软软件学院 | 一种保温箱的开锁控制方法及系统 |
CN110138860B (zh) * | 2019-05-16 | 2022-02-22 | 广州云智易物联网有限公司 | 一种基于物联网的数据通讯方法及装置 |
CN110460638A (zh) * | 2019-07-11 | 2019-11-15 | 深圳职业技术学院 | 消息推送方法及装置 |
CN110635970A (zh) * | 2019-10-10 | 2019-12-31 | 武汉普利商用机器有限公司 | 物联网设备在线状态识别方法、在线信息平台及服务器 |
CN113133027B (zh) * | 2019-12-30 | 2023-01-20 | Tcl新技术(惠州)有限公司 | 一种通信方法、服务器、终端及通信系统 |
CN114039818B (zh) * | 2021-12-27 | 2023-06-13 | 四川启睿克科技有限公司 | 一种可插拔多网关的设备管理系统及方法 |
CN114501186B (zh) * | 2022-01-28 | 2023-10-03 | 瀚云科技有限公司 | 一种数据采集系统、方法、电子设备及存储介质 |
CN115378989B (zh) * | 2022-08-10 | 2023-08-15 | 深圳华芯信息技术股份有限公司 | 基于唤醒通道的mqtt主题订阅系统、方法、终端及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101848236A (zh) * | 2010-05-06 | 2010-09-29 | 北京邮电大学 | 具有分布式网络架构的实时数据分发系统及其工作方法 |
CN103238137A (zh) * | 2010-11-24 | 2013-08-07 | 国际商业机器公司 | 在连接的消息传递网络中的交易消息传递支持 |
CN104052653A (zh) * | 2014-06-23 | 2014-09-17 | 广东天波信息技术股份有限公司 | 一种基于mqtt实现状态呈现的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9210275B2 (en) * | 2009-10-07 | 2015-12-08 | Twilio, Inc. | System and method for running a multi-module telephony application |
-
2015
- 2015-03-31 CN CN201510148432.1A patent/CN104836723B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101848236A (zh) * | 2010-05-06 | 2010-09-29 | 北京邮电大学 | 具有分布式网络架构的实时数据分发系统及其工作方法 |
CN103238137A (zh) * | 2010-11-24 | 2013-08-07 | 国际商业机器公司 | 在连接的消息传递网络中的交易消息传递支持 |
CN104052653A (zh) * | 2014-06-23 | 2014-09-17 | 广东天波信息技术股份有限公司 | 一种基于mqtt实现状态呈现的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104836723A (zh) | 2015-08-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104836723B (zh) | 基于mqtt主题订阅机制的通信方法以及接入网关 | |
JP5794432B2 (ja) | ショートメッセージサービスメッセージングをコンタクトセンタアプリケーションと統合するためのシステムおよび方法 | |
US9654519B2 (en) | Notification of communication events | |
US7505574B2 (en) | Method and system for providing an improved communications channel for telephone conference initiation and management | |
US9060049B2 (en) | Notification of communication events | |
KR101859235B1 (ko) | 범용 플러그 앤 플레이 가능 텔레포니 장치들과 무선 영역 네트워크 장치들 사이의 멀티미디어 회의 시스템 및 방법 | |
US9444777B2 (en) | Method and processing system for routing a message request | |
CN114025002B (zh) | 一种基于mqtt信息传输的方法、系统及通信设备 | |
CN106487641A (zh) | 一种实现在线客服的方法和装置 | |
US9419847B2 (en) | Notification of communication events | |
US10567183B2 (en) | System and method for conference messaging between telephony devices in a first network and devices connected to a second network | |
WO2012163224A1 (zh) | 一种实现即时通讯与网络会议模式切换的方法及系统 | |
CN112887190A (zh) | 用于云视频的融合平台跨网络多方通讯、协作的解决方法 | |
JP5975998B2 (ja) | ユニバーサルプラグアンドプレイ可能なテレフォニーデバイスと広域ネットワーク(wan)デバイスとの間のコンファレンスメッセージングシステム及び方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |