重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇内容主要讲解“如何二次封装MQTT开源组件moquette”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何二次封装MQTT开源组件moquette”吧!
为西双版纳等地区用户提供了全套网页设计制作服务,及西双版纳网站建设行业解决方案。主营业务为成都网站设计、做网站、西双版纳网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
moquette是一款开源的消息代理,整个系统基于java开发,以netty为基础完整实现了MQTT协议的。
单纯靠moquette直接使用到项目上确实有些不太好用,通过需求做一定量的封装使用更方便。
下面开始对moquette的封装做一定的记录
1.封装主要涉及内容有跟随SpringBoot启动同时启动mqtt服务器
2.封装服务器对客户端发送消息功能、封装判断客户端是否在线、封装服务器向设备发送消息并获取返回值
config: 配置类文件
handler: 客户端连接和消息处理类文件
server: 封装了moquette的消息发送类
utils: 需要使用到的工具类
mqtt: mqtt服务的端口、账号、秘密等配置信息
MqttBrokerConfiguration.java:创建moquette的Server在Spring自动注入对象
MqttBrokerRunConfiguration.java:mqtt服务随SpringBoot项目启动配置类
MqttCustomConfig.java:管理mqtt需要使用到的Topic
下面2个类都是处理客户端的连接、断开连接、接收客户端消息等事件功能,主要区分不同的使用场景,主要都是实现了moquette提供的 AbstractInterceptHandler类
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”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!