详介 MQTT 服务器的搭建与客户端连接


目录

  • 一、MQTT 协议简介
  • 二、使用 apollo 搭建 MQTT 服务器
  • 三、使用 MQTT 客户端创建连接
  • 四、消息发布与订阅的基本操作
  • 五、总结
  • 六、参考资料

本文内容:学习和熟悉 MQTT 协议,在本机上安装 MQTT 服务器和客户端软件,练习消息发布与订阅,比如自定义一个天气预报的消息主题(提示:可以利用课堂教学资料或网上资源)
一、MQTT 协议简介
  • MQTT( Message Queuing Telemetry Transport,消息队列遥测传输协议 ),是一种基于发布/订阅( publish/subscribe )模式的 “ 轻量级 ” 通讯协议,该协议构建于 TCP/IP 协议上,由 IBM 在 1999 年发布。MQTT 最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。
1)MQTT 的特点:
  • MQTT 协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。
  • MQTT 协议当前版本为,2014 年发布的 MQTT v3.1.1。除标准版外,还有一个简化版 MQTT-SN,该协议主要针对嵌入式设备,这些设备一般工作于 TCP/IP 网络,如:ZigBee。
  • MQTT 协议运行在 TCP/IP 或其他网络协议,提供有序、无损、双向连接。其特点包括:
    • 1、使用的发布/订阅消息模式,它提供了一对多消息分发,以实现与应用程序的解耦;
    • 2、对负载内容屏蔽的消息传输机制;
    • 3、对传输消息有三种服务质量(QoS):
      ——最多一次,这一级别会发生消息丢失或重复,消息发布依赖于底层TCP/IP网络。即:<=1;
      ——至多一次,这一级别会确保消息到达,但消息可能会重复。即:>=1;
      ——只有一次,确保消息只有一次到达。即:=1。在一些要求比较严格的计费系统中,可以使用此级别;
    • 4、数据传输和协议交换的最小化(协议头部只有2字节),以减少网络流量;
    • 5、通知机制,异常中断时通知传输双方;
2)MQTT 协议原理
详介 MQTT 服务器的搭建与客户端连接
文章图片

  • 实现MQTT协议需要:客户端和服务器端
  • MQTT协议中有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。
  • MQTT传输的消息分为:主题(Topic)和负载(payload)两部分
    • Topic,可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload)
    • payload,可以理解为消息的内容,是指订阅者具体要使用的内容
说明:更多信息了解请百度搜索:消息通信的利器-MQTT协议简介及协议原理
详介 MQTT 服务器的搭建与客户端连接
文章图片

二、使用 apollo 搭建 MQTT 服务器 1)配置 apollo
  • 下载 apollo 链接:https://pan.baidu.com/s/1fwm0KnB7xG_JBna7nM-mpA
    提取码:vy47
  • 解压缩文件
  • 配置 jdk(说明:如果之前已经配置好,可以直接忽略,安装版本不可过高,否则后面搭建不成功),参考博客:JDK安装与环境变量配置
  • 然后进入到 apollo 下面的 bin 文件夹下,并使用命令 apollo.cmd create mybroker注:mybroker 是自己随便取得一个名字),创建成功如下图所示。
    详介 MQTT 服务器的搭建与客户端连接
    文章图片
2)开启 appllo 服务
  • 使用 cmd 进入到 apache-apollo-1.7.1\bin\mybroker\bin 路径下,运行命令 .\apollo-broker-service install.\apollo-broker-service start 即可。
    详介 MQTT 服务器的搭建与客户端连接
    文章图片
  • 在服务中可以看到有这个 Apollo:mybroker 运行。
    详介 MQTT 服务器的搭建与客户端连接
    文章图片
  • 在浏览器中输入 http://127.0.0.1:61680,进入 apollo 的登录页面。
    详介 MQTT 服务器的搭建与客户端连接
    文章图片
  • 第一次登录输入:Username=admin,Password=password 即可。
    详介 MQTT 服务器的搭建与客户端连接
    文章图片
  • 但是,第二次登陆的时候,就无法再次登录。可以输入:https://127.0.0.1:61681,进行再次登录。
3)修改 ip 地址,以供局域网连接
  • 查看自己电脑的 IP 是多少。详介 MQTT 服务器的搭建与客户端连接
    文章图片
  • 登录 MQTT 服务器打开之后,选择 configration 下选择 apollo.xml 文件,修改 属性为服务器 ip(192.168.0.2), 同步修改,以及 tcp 节点下将默认的 tcp://0.0.0.0:61613 修改为服务器的 ip,以供局域网使用,点击 Save 保存,即可在局域网内使用服务器的 ip 登录。
    详介 MQTT 服务器的搭建与客户端连接
    文章图片
  • 使用地址 http:\\192.168.0.2:61680 可以成功打开。
    详介 MQTT 服务器的搭建与客户端连接
    文章图片
  • 如果主机地址换了,可以依照上面的方法重新修改 apollo.xml 文件。
  • 至此,MQTT 服务器搭建基本完成了。
三、使用 MQTT 客户端创建连接
  • 下载客户端链接:https://pan.baidu.com/s/1egAsqFVHbrR7VMrzbr2AOw
    提取码:go0f
  • 解压后,双击运行 paho.exe
    详介 MQTT 服务器的搭建与客户端连接
    文章图片
  • 添加连接。
    详介 MQTT 服务器的搭建与客户端连接
    文章图片
  • 点击 选项 ,勾选上登录,并输入用户名和密码
    详介 MQTT 服务器的搭建与客户端连接
    文章图片
  • 输入服务器地址(刚刚的 apollo.xml 文件内的),然后点击 连接 ,即可连接成功。
    详介 MQTT 服务器的搭建与客户端连接
    文章图片
  • 服务器显示连接的 IP 及端口号等信息。
    详介 MQTT 服务器的搭建与客户端连接
    文章图片
四、消息发布与订阅的基本操作
  • 按照上述方法再额外建立一个连接(:可以使用同一局域网的 PC 连接服务器,前提是安装了客户端,这里我没有别的 PC ,就用本机额外建立了一个连接)。
    详介 MQTT 服务器的搭建与客户端连接
    文章图片

    详介 MQTT 服务器的搭建与客户端连接
    文章图片
  • 我这里显示的是:同一主机使用不同的端口连接了服务器。
客户端 test1:订阅 hello 主题
  • 点击 按钮,添加一个主题,然后点击 订阅 即可(说明:由于并没有 hello 主题发出,所以没有收到消息,其它客户端发布主题后,该客户端会收到消息)。
    详介 MQTT 服务器的搭建与客户端连接
    文章图片
【详介 MQTT 服务器的搭建与客户端连接】客户端 test2:发布 hello 主题
  • 编辑 主题消息 ,并点击 发布 ,历史记录中显示已发布。
    详介 MQTT 服务器的搭建与客户端连接
    文章图片
  • 由于客户端 test1 已订阅了 hello 主题,所以同时会收到该消息。
    详介 MQTT 服务器的搭建与客户端连接
    文章图片
五、总结
  • MQTT 使用起来十分的方便,在多个小型设备之间可以进行数据的传输,这篇文章只是对 MQTT 进行订阅 \ 发送功能的简介使用,并没有对 MQTT 协议进行深入的了解,但是由于 MQTT 的轻便、可靠的使用,在未来的物联网方面肯定有很大的促进作用,所以还是有必要去学习使用相关的操作、功能。
六、参考资料 1、MQTT服务器搭建以及构建服务端和客户端——Windows
2、Apollo MQTT在windows上面环境部署与连接测试

    推荐阅读