如何二次封装MQTT开源组件moquette

发布时间:2021-12-06 16:52:01 作者:iii
来源:亿速云 阅读:619

本篇内容主要讲解“如何二次封装MQTT开源组件moquette”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何二次封装MQTT开源组件moquette”吧!

什么是moquette

moquette是一款开源的消息代理,整个系统基于java开发,以netty为基础完整实现了MQTT协议的。

封装的目的

单纯靠moquette直接使用到项目上确实有些不太好用,通过需求做一定量的封装使用更方便。

下面开始对moquette的封装做一定的记录

封装的内容

1.封装主要涉及内容有跟随SpringBoot启动同时启动mqtt服务器

2.封装服务器对客户端发送消息功能、封装判断客户端是否在线、封装服务器向设备发送消息并获取返回值

目录:

    java目录下:

            config: 配置类文件

            handler: 客户端连接和消息处理类文件

            server: 封装了moquette的消息发送类

            utils: 需要使用到的工具类

    resources目录下:

            mqtt: mqtt服务的端口、账号、秘密等配置信息

如何二次封装MQTT开源组件moquette

配置类文件:

MqttBrokerConfiguration.java:创建moquette的Server在Spring自动注入对象

MqttBrokerRunConfiguration.java:mqtt服务随SpringBoot项目启动配置类

MqttCustomConfig.java:管理mqtt需要使用到的Topic

如何二次封装MQTT开源组件moquette

客户端连接处理类:

下面2个类都是处理客户端的连接、断开连接、接收客户端消息等事件功能,主要区分不同的使用场景,主要都是实现了moquette提供的 AbstractInterceptHandler类

如何二次封装MQTT开源组件moquette

发送消息到客户端类:

如何二次封装MQTT开源组件moquette

使用说明:

1.接收客户端数据API:实现AbstractInterceptHandler类重写onPublish函数就能通过onPublish函数接收客户端的消息。2.判断客户端是否在线APIMqttServer.isOnline(clientId)3.发送消息到客户端此方法适用设备提供了接口与参数类型数量等消息发送,并且会获得对应的返回值,但是需要客户端处理完数据之后再向服务器推送一条特定topic的消息,双方约定好消息topicMqttServer.luatInvoke(clientId,apiTag,params)clientId:客户端IDapiTag:客户端接口名称params:参数此方法适用于客户端没提供接口等消息发送,并且会获得对应的返回值,但是需要客户端处理完数据之后再向服务器推送一条特定topic的消息,双方约定好消息topicMqttServer.pubAndSub(clientId,rrpcCmd,topicPub,topicSub)clientId:客户端IDrrpcCmd:发送的消息topicPub:客户端订阅的topictopicSub:客户端返回消息发送的topic

MQTT客户端通过TCP协议连接服务器,向服务器发送消息,服务器的AbstractInterceptHandler.onPublish(msg)接口能接收任何从各个客户端发送的消息。同时客户端需要监听回调函数,保证接收到服务器的消息。MQTT服务器向客户端发送消息之后有8秒钟时间等待客户端发布指定topic消息,服务器接收到的时候把它当成一个返回值处理

封装后的代码路径:https://gitee.com/winfongs/mqtt

到此,相信大家对“如何二次封装MQTT开源组件moquette”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

推荐阅读:
  1. kubernetes中python api的二次封装
  2. bootstrap模态框二次封装

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

moquette mqtt

上一篇:python如何解决编码错误UnicodeEncodeError: 'ascii' codec can't encode characters in pos问题

下一篇:ESP8266+MQTT怎么实现LED灯的远程控制

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》