一种实现多路复用的MQTT协议通信方法及系统技术方案

技术编号:25842948 阅读:46 留言:0更新日期:2020-10-02 14:21
本发明专利技术公开一种实现多路复用的MQTT协议通信方法及系统,建立若干TCP通道,在MQTT客户端登陆代理服务器时,获取登陆客户端与TCP通道的映射表,收发消息时,通过该MQTT客户端ID进而在映射表中查找该MQTT客户端对应的TCP通道,然后获得TCP通道的所有消息内容,最终实现TCP道的多路复用。本发明专利技术解决Lora和Zigbee通讯这种星型网络拓扑结构接入物联网协议的问题,使得MQTT代理服务器同时兼容已有MQTT协议,确保支持标准MQTT协议的设备也可正常接入。

【技术实现步骤摘要】
一种实现多路复用的MQTT协议通信方法及系统
本专利技术属于网络通信技术,具体涉及一种实现多路复用的MQTT协议通信方法及系统。
技术介绍
MQTT(消息队列遥测传输)是ISO标准(ISO/IECPRF20922)下基于发布/订阅范式的消息协议。它工作在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客户端通信。实施例的一本文档来自技高网...

【技术保护点】
1.一种实现多路复用的MQTT协议通信方法,其特征在于:具体步骤如下:/n步骤1、在传输层建立若干TCP通道,同一组MQTT客户端共用同一条TCP通道与MQTT代理服务器进行通信连接,即:将同一组的若干MQTT客户端与TCP通道构成一对多映射关系,该一对多映射关系根据MQTT客户端的登录和离线动态生成;/n步骤2、在MQTT客户端通过TCP通道登录MQTT代理服务器,MQTT代理服务器获取MQTT客户端与TCP通道之间的映射关系,记录到MQTT客户端-TCP通道映射关系表中;/n步骤3,工作时,当MQTT代理服务器需要进行消息转发时,首先通过MQTT客户端ID来查询检测该MQTT客户端-TCP通道映射表,若找到对应的TCP通道且确定对应的MQTT客户端,则MQTT代理服务器接着进行消息转发,否则转发给该MQTT客户端的消息被丢弃。/n

【技术特征摘要】
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通道在线,且与之关联的MQ...

【专利技术属性】
技术研发人员:王顺刘爽闵济海叶增军姜红杉
申请(专利权)人:南京天创电子技术有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1