CN111741129A - 一种实现多路复用的mqtt协议通信方法及*** - Google Patents
一种实现多路复用的mqtt协议通信方法及*** Download PDFInfo
- Publication number
- CN111741129A CN111741129A CN202010754458.1A CN202010754458A CN111741129A CN 111741129 A CN111741129 A CN 111741129A CN 202010754458 A CN202010754458 A CN 202010754458A CN 111741129 A CN111741129 A CN 111741129A
- Authority
- CN
- China
- Prior art keywords
- mqtt
- client
- tcp channel
- proxy server
- tcp
- 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
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/141—Setup of application sessions
-
- 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/50—Network services
- H04L67/54—Presence management, e.g. monitoring or registration for receipt of user log-on information, or the connection status of the users
-
- 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/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/562—Brokering proxy services
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开一种实现多路复用的MQTT协议通信方法及***,建立若干TCP通道,在MQTT客户端登陆代理服务器时,获取登陆客户端与TCP通道的映射表,收发消息时,通过该MQTT客户端ID进而在映射表中查找该MQTT客户端对应的TCP通道,然后获得TCP通道的所有消息内容,最终实现TCP道的多路复用。本发明解决Lora和Zigbee通讯这种星型网络拓扑结构接入物联网协议的问题,使得MQTT代理服务器同时兼容已有MQTT协议,确保支持标准MQTT协议的设备也可正常接入。
Description
技术领域
本发明属于网络通信技术,具体涉及一种实现多路复用的MQTT协议通信方法及***。
背景技术
MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议。
对于目前MQTT协议,MQTT通道和TCP通道一一对应,导致MQTT协议和传输层耦合在一起,具有低协议开销,对不稳定网络的容忍和故障恢复,支持大并发连接的优势。
然而如图1所示,现有技术中MQTT客户端和TCP通道一一对应,TCP通道是无法复用的,目前的MQTT协议作为上层协议和传输层耦合在一起,不支持星型的网络拓扑结构,也无法支持传输层的多路复用,存在局限性。
发明内容
发明目的:本发明的目的在于解决现有技术中存在的不足,提供一种实现多路复用的MQTT协议通信方法及***。
技术方案:本发明的实现多路复用的MQTT协议通信方法,具体步骤如下:
步骤1、在传输层建立若干TCP通道(MQTT客户端通过网关和MQTT代理服务器建立TCP通道),同一组MQTT客户端通过同一条TCP通道与MQTT代理服务器进行通信连接,即:将同一组的若干MQTT客户端与TCP通道做成一对多映射关系;该一对多映射关系根据MQTT客户端的登录(在线)和离线动态生成;
步骤2、在MQTT客户端登录MQTT代理服务器,MQTT代理服务器获取MQTT客户端与TCP通道之间的映射关系;
步骤3,工作时,当MQTT代理服务器需要进行消息转发,首先通过MQTT客户端ID来查询检测该MQTT客户端-TCP通道映射关系表,若找到对应的TCP通道且确定对应的MQTT客户端,则MQTT代理服务器接着进行消息转发,否则将消息丢弃。
进一步的,所述步骤3中在查询检测MQTT客户端和TCP通道之间的一对多映射关系表时,分别独立判断TCP通道是否在线和MQTT客户端是否在线。
判断TCP通道是否在线时以TCP通道是否收发消息数据为依据;若TCP通道没有收发消息数据,则判断TCP通道离线,并判断与该TCP通道连接的对应若干MQTT客户端也为离线,然后将消息数据丢弃;若TCP通道能够收发消息数据则判断TCP通道在线;
判断MQTT客户端是否在线判断时以MQTT代理服务器是否收到MQTT客户端发送的MQTT心跳帧为依据,若MQTT代理服务器能够收到某一MQTT客户端发送的MQTT心跳帧,则判断该MQTT客户端在线,否则判断该MQTT客户端离线,并将消息数据丢弃。
上述MQTT代理服务器的另一端通过TCP通道与标准MQTT客户端通信。
本发明还公开一种执行上述实现多路复用的MQTT协议通信方法的***,包括MQTT代理服务器、标准MQTT客户端和若干组MQTT客户端;传输层中MQTT代理服务器与不同组MQTT客户端之间通过对应的TCP通道连接,建立多个TCP连接请求,通过MQTT客户端登录MQTT代理服务器时,先通过MQTT客户端ID来查新获取该MQTT客户端与TCP通道之间的一对多映射关系;进行消息收发时,分别独立判断TCP通道是否在线以及MQTT客户端是否在线判断;最终MQTT代理服务器实现多路复用;MQTT代理服务器的另一端通过TCP通道与标准MQTT客户端通信。
本发明还公开一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,该计算机程序使计算机执行时实现上述实现多路复用的MQTT协议通信方法。
有益效果:本发明能够实现多路复用,进而解决Lora和Zigbee通讯这种星型网络拓扑结构接入物联网协议的问题;同时又能够兼容目前已有的MQTT协议,确保支持标准MQTT协议的设备也可正常接入。
附图说明
图1为为现有技术中MQTT代理服务器的总框架图;
图2为实施例***整体框架示意图。
具体实施方式
下面对本发明技术方案进行详细说明,但是本发明的保护范围不局限于所述实施例。
如图2所示,本实施例的实现多路复用的MQTT协议通信方法,具体步骤如下:
步骤1、在传输层建立若干TCP通道,同一组MQTT客户端通过同一条TCP通道与MQTT代理服务器进行通信连接,即:将同一组的若干MQTT客户端与TCP通道做成一对多映射关系;该一对多映射关系根据MQTT客户端的登录(在线)和离线动态生成;
步骤2、在MQTT客户端登录MQTT代理服务器,并获取该MQTT客户端与TCP通道之间的映射关系;
步骤3,工作时,当MQTT代理服务器需要进行消息转发,首先通过MQTT客户端ID来查询检测该MQTT客户端-TCP通道映射关系表,若找到对应的TCP通道且确定对应的MQTT客户端,则MQTT代理服务器接着进行消息转发,否则将消息丢弃。
其中在查询检测MQTT客户端和TCP通道之间的一对多映射关系表时,分别独立判断TCP通道是否在线和MQTT客户端是否在线。
判断TCP通道是否在线时以TCP通道是否收发消息数据为依据;若TCP通道没有收发消息数据,则判断TCP通道离线,并判断与该TCP通道连接的对应若干MQTT客户端也为离线,然后将消息数据丢弃;若TCP通道能够收发消息数据则判断TCP通道在线;
判断MQTT客户端是否在线判断时以MQTT代理服务器是否收到MQTT客户端发送的MQTT心跳帧为依据,若MQTT代理服务器能够收到某一MQTT客户端发送的MQTT心跳帧,则判断该MQTT客户端在线,否则判断该MQTT客户端离线,并将消息数据丢弃。
上述MQTT代理服务器的另一端通过TCP通道与标准MQTT客户端通信。
本实施例中, MQTT客户端与TCP通道做成一对多映射关系表如表1所示,
表1
表1展示了本发明的其中一种MQTT客户端的ID与 TCP传输通道的ID之间的对应关系,可通过MQTT客户端ID来查询检测该MQTT客户端-TCP通道映射关系。
即:首先识别需要转发消息的MQTT客户端ID,然后依据该MQTT客户端的ID在映射关系中查找对应TCP通道的ID,进而获得该TCP通道进行数据发送,可以保证消息转发过程中的有序性和高效性。通过将 MQTT 客户端和TCP 通道做成一对多的映射,解除MQTT协议和TCP协议的耦合性。
执行上述实现多路复用的MQTT协议通信方法的***,包括MQTT代理服务器、标准MQTT客户端和若干组MQTT客户端;传输层中MQTT代理服务器与不同组MQTT客户端之间通过对应的TCP通道连接,建立多个TCP连接请求,通过MQTT客户端登录MQTT代理服务器时,先通过MQTT客户端ID来查新获取该MQTT客户端与TCP通道之间的一对多映射关系;进行消息收发时,分别独立判断TCP通道是否在线以及MQTT客户端是否在线判断;最终MQTT代理服务器实现多路复用;MQTT代理服务器的另一端通过TCP通道与标准MQTT客户端通信。
实施例的一种计算机可读存储介质存储有计算机程序,该计算机程序使计算机执行时实现上述实现多路复用的MQTT协议通信方法。
Claims (7)
1.一种实现多路复用的MQTT协议通信方法,其特征在于:具体步骤如下:
步骤1、在传输层建立若干TCP通道,同一组MQTT客户端共用同一条TCP通道与MQTT代理服务器进行通信连接,即:将同一组的若干MQTT客户端与TCP通道构成一对多映射关系,该一对多映射关系根据MQTT客户端的登录和离线动态生成;
步骤2、在MQTT客户端通过TCP通道登录MQTT代理服务器,MQTT代理服务器获取MQTT客户端与TCP通道之间的映射关系,记录到MQTT客户端-TCP通道映射关系表中;
步骤3,工作时,当MQTT代理服务器需要进行消息转发时,首先通过MQTT客户端ID来查询检测该MQTT客户端-TCP通道映射表,若找到对应的TCP通道且确定对应的MQTT客户端,则MQTT代理服务器接着进行消息转发,否则转发给该MQTT客户端的消息被丢弃。
2.根据权利要求1所述的实现多路复用的MQTT协议通信方法,其特征在于:所述步骤3中在查询检测MQTT客户端和TCP通道之间的一对多映射关系表时,分别独立判断TCP通道是否在线和MQTT客户端是否在线。
3.根据权利要求1所述的实现多路复用的MQTT协议通信方法,其特征在于:所述步骤3中判断TCP通道是否在线时以TCP通道是否收发消息数据为依据;若TCP通道没有收发消息数据,则判断TCP通道离线,并判断与该TCP通道连接的对应若干MQTT客户端也为离线,然后将消息数据丢弃;若TCP通道能够收发消息数据则判断TCP通道在线,且与之关联的MQTT客户端的在线状态保持不变。
4.根据权利要求1所述的实现多路复用的MQTT协议通信方法,其特征在于:所述步骤3中判断MQTT客户端是否在线判断时以MQTT代理服务器是否收到MQTT客户端发送的MQTT心跳帧为依据,若MQTT代理服务器能够收到某一MQTT客户端发送的MQTT心跳帧,则判断该MQTT客户端在线,否则判断该MQTT客户端离线,并将消息数据丢弃。
5.根据权利要求1所述的实现多路复用的MQTT协议通信方法,其特征在于:所述MQTT代理服务器的另一端通过TCP通道与标准MQTT客户端通信。
6.一种执行权利要求1至5任意一项所述的实现多路复用的MQTT协议通信方法的***,其特征在于:包括MQTT代理服务器、标准MQTT客户端和若干组MQTT客户端;传输层中MQTT代理服务器与不同组MQTT客户端之间通过对应的TCP通道连接,建立多个TCP连接请求,通过MQTT客户端登录MQTT代理服务器时,先通过MQTT客户端ID来查新获取该MQTT客户端与TCP通道之间的一对多映射关系;进行消息收发时,分别独立判断TCP通道是否在线以及MQTT客户端是否在线判断;最终MQTT代理服务器实现多路复用;MQTT代理服务器的另一端通过TCP通道与标准MQTT客户端通信。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,该计算机程序使计算机执行时实现如权利要求1~5任意一项所述的实现多路复用的MQTT协议通信方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010754458.1A CN111741129A (zh) | 2020-07-31 | 2020-07-31 | 一种实现多路复用的mqtt协议通信方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010754458.1A CN111741129A (zh) | 2020-07-31 | 2020-07-31 | 一种实现多路复用的mqtt协议通信方法及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111741129A true CN111741129A (zh) | 2020-10-02 |
Family
ID=72656613
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010754458.1A Pending CN111741129A (zh) | 2020-07-31 | 2020-07-31 | 一种实现多路复用的mqtt协议通信方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111741129A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112995302A (zh) * | 2021-02-07 | 2021-06-18 | 深圳市桑达无线通讯技术有限公司 | 一种基于mqtt传输协议实现的远程终端管理方法 |
CN114500070A (zh) * | 2022-02-10 | 2022-05-13 | 上海蓝长自动化科技有限公司 | 一种基于秘密分享算法的mqtt协议安全通信方法 |
CN114520836A (zh) * | 2022-01-12 | 2022-05-20 | 深圳市微创云启科技有限公司 | 一种可多路复用并防数据篡改的网络通讯协议方法和*** |
CN114945034A (zh) * | 2022-05-17 | 2022-08-26 | 西北工业大学 | 一种基于局域网和ZigBee的开放物联网平台 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150271299A1 (en) * | 2014-03-21 | 2015-09-24 | Ptc Inc. | System and method of abstracting communication protocol using self-describing messages |
CN105376589A (zh) * | 2015-10-27 | 2016-03-02 | 上海斐讯数据通信技术有限公司 | 基于mqtt的智能电视消息的推送装置及方法 |
CN106713124A (zh) * | 2017-01-24 | 2017-05-24 | 深圳市启仑智能科技有限公司 | 一种基于mqtt和mysql的消息推送方法和*** |
-
2020
- 2020-07-31 CN CN202010754458.1A patent/CN111741129A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150271299A1 (en) * | 2014-03-21 | 2015-09-24 | Ptc Inc. | System and method of abstracting communication protocol using self-describing messages |
CN105376589A (zh) * | 2015-10-27 | 2016-03-02 | 上海斐讯数据通信技术有限公司 | 基于mqtt的智能电视消息的推送装置及方法 |
CN106713124A (zh) * | 2017-01-24 | 2017-05-24 | 深圳市启仑智能科技有限公司 | 一种基于mqtt和mysql的消息推送方法和*** |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112995302A (zh) * | 2021-02-07 | 2021-06-18 | 深圳市桑达无线通讯技术有限公司 | 一种基于mqtt传输协议实现的远程终端管理方法 |
CN112995302B (zh) * | 2021-02-07 | 2022-06-07 | 深圳市桑达无线通讯技术有限公司 | 一种基于mqtt传输协议实现的远程终端管理方法 |
CN114520836A (zh) * | 2022-01-12 | 2022-05-20 | 深圳市微创云启科技有限公司 | 一种可多路复用并防数据篡改的网络通讯协议方法和*** |
CN114520836B (zh) * | 2022-01-12 | 2024-04-19 | 深圳市微创云启科技有限公司 | 一种可多路复用并防数据篡改的网络通讯协议方法和*** |
CN114500070A (zh) * | 2022-02-10 | 2022-05-13 | 上海蓝长自动化科技有限公司 | 一种基于秘密分享算法的mqtt协议安全通信方法 |
CN114945034A (zh) * | 2022-05-17 | 2022-08-26 | 西北工业大学 | 一种基于局域网和ZigBee的开放物联网平台 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111741129A (zh) | 一种实现多路复用的mqtt协议通信方法及*** | |
CN108833487B (zh) | 一种tcp传输协议代理方法 | |
US8473620B2 (en) | Interception of a cloud-based communication connection | |
CN111683158B (zh) | 一种实现同步请求响应的mqtt协议通信方法 | |
CN109327513B (zh) | 交互方法、装置及计算机可读存储介质 | |
US20060036747A1 (en) | System and method for resource handling of SIP messaging | |
CN106961426B (zh) | 智能设备的通讯方法及装置 | |
CN100454905C (zh) | 穿越网络地址转换的方法 | |
CN106713084B (zh) | 物联网多网关*** | |
US10110711B2 (en) | Split network address translation | |
CN107528891B (zh) | 一种基于WebSocket的自动集群方法及其*** | |
KR101938623B1 (ko) | 오픈 플로우 통신 방법, 시스템, 제어기 및 서비스 게이트웨이 | |
CN104301287B (zh) | 一种多对多会话的实现方法、网络节点、服务器及*** | |
CN112968965B (zh) | Nfv网络节点的元数据服务方法、服务器及存储介质 | |
CN113194133A (zh) | 一种配电物联网海量消息传递的mqtt协议通信方法 | |
CN113162989A (zh) | 一种基于MQTT-WebSocket的消息收发方法 | |
CN115002023B (zh) | 一种链路聚合方法、链路聚合装置、电子设备及存储介质 | |
AT515450B1 (de) | Verfahren für die Kommunikation in einem Satellitennetzwerk | |
CN102868642B (zh) | 在asic中实现nvgre报文转发的方法和装置 | |
CN115037785B (zh) | 即时通讯***及方法 | |
CN111294358A (zh) | 报文的处理方法及装置 | |
CN109379443B (zh) | 一种面向物联网的分布式消息队列的实现方法 | |
CN110474781B (zh) | 一种组播数据转发的方法及装置 | |
US20090094334A1 (en) | Gateway with transparent mail relay | |
CN102857504B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20201002 |
|
RJ01 | Rejection of invention patent application after publication |