一种基于MQTT协议服务器实现方法.pdf

上传人:g**** 文档编号:6019135 上传时间:2019-04-03 格式:PDF 页数:8 大小:439.61KB
返回 下载 相关 举报
摘要
申请专利号:

CN201710041498.X

申请日:

2017.01.20

公开号:

CN106775772A

公开日:

2017.05.31

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):G06F 9/44申请日:20170120|||公开

IPC分类号:

G06F9/44

主分类号:

G06F9/44

申请人:

山东浪潮商用系统有限公司

发明人:

尹祎; 李铁军; 刘晓

地址:

250100 山东省济南市高新区孙村镇科航路2877号研发楼一楼

优先权:

专利代理机构:

济南信达专利事务所有限公司 37100

代理人:

孟峣

PDF下载: PDF下载
内容摘要

本发明公开了一种基于Mqtt协议服务器实现方法,其实现过程为,基于开源的Mosquitto服务器平台,使用Java作为开发框架,开发客户机与服务端的jar包,对Mosquitto服务器内行为规范做再次封装;用户在平台注册之后得到封装的2个jar包,通过调用jar包内的方法,使客户机在Mosquitto服务器上订阅指令信息,当客户机收到服务端的指令时根据相应指令做出对应反应;服务端jar包用于开发人员,调用jar中方法为客户端发送相应指令使客户机完成对应工作。本发明的一种基于Mqtt协议服务器实现方法与现有技术相比,在最短的时间内,完成一个企业级中小型用户MQTT接入开发,省去学习的时间周期,同时不需要环境系统搭建,在本发明已提供Jar包,可进行快速开发。

权利要求书

1.一种基于Mqtt协议服务器实现方法,其特征在于,其实现过程为,
基于开源的Mosquitto服务器平台,使用Java作为开发框架,开发客户机与服务端的
jar包,对Mosquitto服务器内行为规范做再次封装;
用户在平台注册之后得到封装的2个jar包,通过调用jar包内的方法,使客户机在
Mosquitto服务器上订阅指令信息,当客户机收到服务端的指令时根据相应指令做出对应
反应;
服务端jar包用于开发人员,调用jar中方法为客户端发送相应指令使客户机完成对应
工作。
2.根据权利要求1所述的一种基于Mqtt协议服务器实现方法,其特征在于,客户端jar
包用于客户机订阅及发布,接口开发者通过jar包中放出的接口进行订阅与发布操作。
3.根据权利要求1所述的一种基于Mqtt协议服务器实现方法,其特征在于,基于上述
jar包,客户端与服务端之间的通信过程为:首先客户机根据jar包中定义的接口方法发布
相应信息,MQTT服务器接收到信息并将信息推送给在服务器上订阅的相关读者,这时服务
端根据编写的jar读取发送过来的信息,根据业务逻辑进行处理或者返回信息。
4.根据权利要求3所述的一种基于Mqtt协议服务器实现方法,其特征在于,通过jar包,
客户端与服务端之间的具体通信过程为:
在客户机开机时首先调用缺省登录接口,客户机内部jar首先获得本机的ClientId与
型号,并且拼写Topic与Messages,然后调用第三方开源jar获得MQTT服务器连接属性,连接
成功后根据对应的Topic发送Messages信息;
Mosquitto代理服务器将收到的Topic和Messages发送给已经订阅的服务端;
在服务端接收到Messages后,根据对应的信息将此设备注册到Redis中,并返回对应的
业务用户名与密码,至此完成了一次jar-服务器-jar的双层通信。
5.根据权利要求4所述的一种基于Mqtt协议服务器实现方法,其特征在于,在上述客户
端与服务端之间的通信过程中,通过jar包,进行缺省登录的具体过程为:
首先在客户机jar中导入mqtt客户机包,在登陆时首先封装服务器需要的参数,将所有
参数封装到MQTT类中,通过网络MQTT协议发送一个2进制包,包的大小以字节计算,当服务
器接收到包的信息后将信息推送给已经订阅了此主题的其他服务端;
在服务端中,首先启动一个基于MQTT的监听器,同时在Mosquitto服务器上注册了此
Topic的主题订阅,当Mosquitto服务器接收到客户机发来的Publish函数时,将接收到信息
转发到服务端中,这时在服务端使用Runnable接口对象将数据中的Topic与Messages取出
来进行下一步的逻辑处理。

说明书

一种基于Mqtt协议服务器实现方法

技术领域

本发明涉及计算机应用技术领域,具体地说是一种基于Mqtt协议服务器实现方
法。

背景技术

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的
一个即时通讯协议。

国内很多企业都广泛使用MQTT作为Android手机客户端与服务器端推送消息的协
议。

MQTT由于开放源代码,耗电量小等特点,将会在移动消息推送领域会有更多的贡
献,在物联网领域,传感器与服务器的通信,信息的收集,MQTT都可以作为考虑的方案之一。
在未来MQTT会进入到我们生活的各各方面。

MQTT特点如下:轻量级的 machine-to-machine 通信协议;publish/subscribe模
式;基于TCP/IP;支持QoS;适合于低带宽、不可靠连接、嵌入式设备、CPU内存资源紧张,是一
种比较不错的Android消息推送方案。

基于上述MQTT的优点,它极可能成为今后物联网通信的主要协议所有对MQTT协议
的服务器开发变得尤为重要。在众多MQTT代理服务器中比较成熟的有Apolo,Mosquitto,
Erlong,比较成熟的就有Mosquitto代理服务器。Mosquitto实现了消息推送协议 MQTT
v3.1 的开源消息代理软件,提供轻量级的,支持可发布/可订阅的的消息推送模式,使设备
对设备之间的短消息通信变得简单,比如现在应用广泛的低功耗传感器,手机、嵌入式计算
机、微型控制器等移动设备。

在实际项目开发中经常会遇到类似问题,例如:需要给手机用户推送一条服务信
息,或者使用手机控制税控机或者其他硬件设备。但是在现有技术层面(TCP、HTTP、Socket
等)没有符合相应技术要求的技术。因此MQTT协议与Mosquitto代理服务器就成为完成上述
技术比较好的解决方案。应为MQTT协议相对于其他协议来说更轻量级,网络流量消耗极少
(以字节为单位),对于客户机(手机、税控机等)耗电量得到很好控制。

如果没有我们封装的jar使用MQTT协议会是一件很繁琐的事情。第一用户需要关
心我发布/订阅的主题是什么,我的层级关系是怎样的;而且开发者需要结合业务逻辑与开
发环境对代理服务器(Mosquitto)进行包括安全,权限等方面的配置,不但费时费力而且很
容易出错。

基于此,本发明提出一种基于Mqtt协议服务器实现方法,来解决上述问题。该方法
通过平台技术框架下与封装的jar中就完全可以避免上述不必要的麻烦,而且开发速度极
快,大大节约时间成本。用户接入时不必考虑代理服务器(Mosquitto)安全、权限问题,我们
已经对服务器进行了所有配置。用户不必考虑发布/订阅的主题,我们已经将大部分的主题
样式定义完毕,只需要调用接口即可。

发明内容

本发明的技术任务是针对以上不足之处,提供一种基于Mqtt协议服务器实现方
法。

一种基于Mqtt协议服务器实现方法,其实现过程为,

基于开源的Mosquitto服务器平台,使用Java作为开发框架,开发客户机与服务端的
jar包,对Mosquitto服务器内行为规范做再次封装;

用户在平台注册之后得到封装的2个jar包,通过调用jar包内的方法,使客户机在
Mosquitto服务器上订阅指令信息,当客户机收到服务端的指令时根据相应指令做出对应
反应;

服务端jar包用于开发人员,调用jar中方法为客户端发送相应指令使客户机完成对应
工作。

客户端jar包用于客户机订阅及发布,接口开发者通过jar包中放出的接口进行订
阅与发布操作。

基于上述jar包,客户端与服务端之间的通信过程为:首先客户机根据jar包中定
义的接口方法发布相应信息,MQTT服务器接收到信息并将信息推送给在服务器上订阅的相
关读者,这时服务端根据编写的jar读取发送过来的信息,根据业务逻辑进行处理或者返回
信息。

通过jar包,客户端与服务端之间的具体通信过程为:

在客户机开机时首先调用缺省登录接口,客户机内部jar首先获得本机的ClientId与
型号,并且拼写Topic与Messages,然后调用第三方开源jar获得MQTT服务器连接属性,连接
成功后根据对应的Topic发送Messages信息;

Mosquitto代理服务器将收到的Topic和Messages发送给已经订阅的服务端;

在服务端接收到Messages后,根据对应的信息将此设备注册到Redis中,并返回对应的
业务用户名与密码,至此完成了一次jar-服务器-jar的双层通信。

在上述客户端与服务端之间的通信过程中,通过jar包,进行缺省登录的具体过程
为:

首先在客户机jar中导入mqtt客户机包,在登陆时首先封装服务器需要的参数,将所有
参数封装到MQTT类中,通过网络MQTT协议发送一个2进制包,包的大小以字节计算,当服务
器接收到包的信息后将信息推送给已经订阅了此主题的其他服务端;

在服务端中,首先启动一个基于MQTT的监听器,同时在Mosquitto服务器上注册了此
Topic的主题订阅,当Mosquitto服务器接收到客户机发来的Publish函数时,将接收到信息
转发到服务端中,这时在服务端使用Runnable接口对象将数据中的Topic与Messages取出
来进行下一步的逻辑处理。

本发明的一种基于Mqtt协议服务器实现方法和现有技术相比,具有以下有益效
果:

本发明的一种基于Mqtt协议服务器实现方法,在最短的时间内,完成一个企业级中小
型用户MQTT接入开发,省去学习的时间周期,同时不需要环境系统搭建,在本发明已提供
Jar包,可进行快速开发;节约时间成本为生产企业带来客观的经济效果,如果开发人员不
使用我们的jar在开发效率上会大打折扣,开发一个订阅/发布功能大概会用到1-2个工作
日,效率很低。如果使用我们的jar包开发时间可以缩短到1-2个小时。对于时间成本的节省
和工作效率有着大幅提高,实用性强,适用范围广泛,具有很好的推广应用价值。

附图说明

附图1是本发明客户机jar到服务端jar运作示意图。

附图2是本发明缺省登录过程示意图。

具体实施方式

下面结合附图及具体实施例对本发明作进一步说明。

一种基于Mqtt协议服务器实现方法,本发明基于当前开源的Mosquitto服务器平
台,使用Java作为开发框架,添加部分开源插件后,开发客户机与服务端的jar包,对
Mosquitto服务器内行为规范做再次封装。用户在注册平台之后会得到我们封装的2个jar
包,通过调用jar包内的方法,可以使客户机在Mosquitto服务器上订阅指令信息,当客户机
收到服务端的指令时可以根据相应指令做出对应反映。服务端jar包用于开发人员,可以调
用jar中方法为客户端发送相应指令使客户机完成对应工作。

使用JAVA语言为基础,根据自己业务特性并且结合实际生产环境,对相应技术包
进行二次封装,达到灵活、可控、可扩展的目的。为今后消息推送,以及物联网平台打下技术
基础。

在二次封装中使用MqttClient对象,对其进行业务上的封装实现自己的jar包。其
中客户端jar包主要用于客户机订阅及少量发布,接口开发者可以通过jar包中放出的接口
进行订阅与发布操作,简单方便并且附和实际的生产环境。

除平台之外最重要的是对MQTT访问协议进行了二次封装,对应的有2个jar包。一
个为客户机使用的jar,一个是客户端使用的jar。当接入用户注册完之后会获得这2个jar
包对自己的设备进行接入开发。

如附图1所示,客户机jar到服务端jar运作流程:

在客户机jar中开放接口给用户使用。在接口内部也有运行逻辑,其中以登录接口举
例。

在客户机开机是会首先调用缺省登录接口,客户机内部jar首先获得本机的
ClientId与型号,并且拼写Topic与Messages,而后调用第三方开源jar获得MQTT服务器连
接属性,连接成功后根据对应的Topic发送Messages信息。

Mosquitto代理服务器已经搭建完毕,所以在客户机发布Topic时服务器已经做好
了准备,并且在将收到的Topic和Messages发送给已经订阅的服务端。

在服务端通过我们的jar自动订阅了登录所发送的Topic所以可以很轻松的接收
到到其中的Messages,根据对应的信息将此设备注册到Redis中,并返回对应的业务用户名
与密码。至此完成了一次jar-服务器-jar的双层通信。

技术原理:

如附图2所示,在客户机jar中使用了很多第三方开源jar包得以实现MQTT协议通信。下
面以缺省登录为例说明技术原理。

在客户机jar中导入了mqttClient包,在登陆时首先封装服务器需要的各类参数,
这里使用到了org.fusesource.mqtt.client.MQTT类,调用其中的setHost、setClientId、
setUserName、setPassword、setWillTopic、setWillMessage等一系列方法定义将要发送的
信息类型以及种类。这些方法都是mqttClient包中的方法,根本原理则是将所有参数封装
到MQTT类中,通过网络MQTT协议发送一个2进制包,包的大小以字节计算,当服务器接收到
包的信息后会将信息推送给已经订阅了此主题的其他服务端。

在服务端中类似,首先在服务调用CallbackConnection中的listener端启动一个
MQTT的Lisenter监听,代码运行的同事在Mosquitto服务器上已经注册了此Topic的主题订
阅,当Mosquitto服务器接收到客户机发来的Publish时,会将接收到信息转发到服务端中,
这时在服务端使用Runnable对象将数据中的Topic与Messages取出来进行下一步的逻辑处
理。

如果没有二次封装的jar包,那么用户接入使就需要自己编写服务器通信协议和
指令,这对接入用户造成了很大的不便与麻烦,并且对我们平台搭建的服务器安全有一定
影响,在安全方面不允许接入用户直接对服务器进行访问。但是通过二次封装的jar可以很
好解决上述问题,我们进过二次封装之后只开放用户关心的接口与方法,把其他用户不关
心的操作在后台运行,无论是客户机开发人员或者服务端开发人员都可以很容易上手。在
信息安全方面jar里也封装了安全策略保证接入用户不会直接获取服务器信息和对服务器
的直接访问。大大增加服务器安全性。

对于普通接入用户根据以下步骤可以自行实现相应业务流程:

步骤S1:在平台注册接入用户,管理员会根据接入用户为用户自动分配MastKey和访问
服务器用户。

步骤S2:下载2个jar包,一个是用户客户端的jar(sdk),一个是用户服务器端的
jar文件。

步骤S3:开发人员首先商议服务端与客户机的通讯主题协议,而后客户端用户得
到jar包后根据自己的协议编写客户机收到指令的动作,而服务器端开发人员得到jar后根
据商议的主题编写发送指令动作。

步骤S4:在使用jar同时无论客户机开发人员还是服务器端人员,无需关心服务
器-平台的用户与安全策略,只需要关心业务逻辑即可。

步骤S5:客户机开发完毕后与其他程序一起打包放入机器中,服务器端部署在
tomcat中或者其他服务器即可。无需其他繁琐步骤。

通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应
当理解,本发明并不限于上述的具体实施方式。在公开的实施方式的基础上,所述技术领域
的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。

除说明书所述的技术特征外,均为本专业技术人员的已知技术。

一种基于MQTT协议服务器实现方法.pdf_第1页
第1页 / 共8页
一种基于MQTT协议服务器实现方法.pdf_第2页
第2页 / 共8页
一种基于MQTT协议服务器实现方法.pdf_第3页
第3页 / 共8页
点击查看更多>>
资源描述

《一种基于MQTT协议服务器实现方法.pdf》由会员分享,可在线阅读,更多相关《一种基于MQTT协议服务器实现方法.pdf(8页珍藏版)》请在专利查询网上搜索。

本发明公开了一种基于Mqtt协议服务器实现方法,其实现过程为,基于开源的Mosquitto服务器平台,使用Java作为开发框架,开发客户机与服务端的jar包,对Mosquitto服务器内行为规范做再次封装;用户在平台注册之后得到封装的2个jar包,通过调用jar包内的方法,使客户机在Mosquitto服务器上订阅指令信息,当客户机收到服务端的指令时根据相应指令做出对应反应;服务端jar包用于开发人。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1