成都网站建设设计

将想法与焦点和您一起共享

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

本篇内容主要讲解“如何二次封装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”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


网页标题:如何二次封装MQTT开源组件moquette
分享URL:http://chengdu.cdxwcx.cn/article/jddocs.html