2KB项目,专业的源码交易网站 帮助 收藏 每日签到

对 MQTT 进行探究

  • 时间:2019-01-23 18:27 编辑:2KB 来源:2KB.COM 阅读:341
  • 扫一扫,手机访问
  • 分享
摘要: 英文原文:Div
英文原文:Diving Into MQTT

MQTT 协议 是一种机器对机器(M2M)的协议,它被广泛地用于 IoT (物联网:Internet of Things)。它是一种面向消息的协议。也是因为这个原因,它是非常轻量级的,被 IoT 生态系统广泛采用。 几乎所有的 IoT 云平台 都支持通过 MQTT 与几种不同实现的 IoT 智能设备(例如 Arduino,Raspberry Pi 等) 发送接收数据。

当然,还有其他的 IoT 协议,但是 MQTT 是最有效的。

MQTT 概览

MQTT 是在 1999 年左右被开发出来的,它主要目的是要创建一个带宽受限的协议。此外,它的能耗非常低,这对于 IoT 来说很有吸引力。

这个协议使用了发布——订阅范式,这与面向 HTTP 的请求/响应范式形成对照。它使用二进制消息来交换消息,这是非常低开销的。它在实现上更简单,更优秀,并且是开放的。另一个有趣的方面是 MQTT 使用 TCP 作为传输的底层。所有的这些因素都是为了能更适应 IoT。


其它翻译版本 (2) 加载中

MQTT 消息模式

上文提到,MQTT实现了发布者-订阅者模式。发布者-订阅者模式将发布消息的客户端(发布者)与接收消息的客户端(订阅者)解耦开来。此外,与主要是同步协议的HTTP相比,MQTT是个异步协议,它不会在等待消息时阻塞客户端。另外,MQTT协议也不要求订阅者和发布者是相互连接的。

MQTT 发布者-订阅者模式

如上所述,MQTT是基于消息、实现了发布者-订阅者模式的协议。MQTT其中的关键组件是MQTT代理(broker)。MQTT代理的主要任务是将消息派发给订阅者。即,它从发布者接收消息,然后把消息转发给订阅者。转发消息时,MQTT代理使用话题(topic)来过滤客户端。话题是个字符串,可以通过创建话题级别来组合话题。

话题就像一个虚拟通道,把发布者与它的订阅者连接起来。话题由MQTT代理管理。通过这个虚拟通道,发布者与订阅者解耦,客户端(发布者或订阅者)不必相互知道。由于消息生产者(发布者)和消息消费者(订阅者)间没有直接依赖,所以这个协议是高度可扩展的。

下面这张图描述了MQTT架构:

MQTT 使用方法

现在我们有了大概了解,接下来我们通过实际例子来应用一下。MQTT有很多实现,我们使用Eclipse开发的Mosquitto。第一步,安装MQTT代理,根据我们的目的,我们把它安装到树莓派(Raspberry PI)上。要安装Mosquitto,需要添加它所在的仓库,这样我们才能下载。添加仓库之前,有必要添加key验证下载的安装包是否合法。我们可以通过SSH或者远程桌面连接来连接树莓派。现在,在终端,敲入以下命令:

wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key

然后,导入key:

sudo

apt-key add mosquitto-repo.gpg.key

最后,添加.list文件:

sudo

wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list

这样,MQTT服务器就安装到树莓派上了。这个服务器就是我们的MQTT代理。现在我们需要安装客户端(发布者和订阅者)。本例中,我们把客户端和服务器安装在同一个树莓派,你也可以安装到不同的PC/服务器或者物联网(IoT)主板上。

apt-get install mosquitto-clients

如何发送一个MQTT消息

假设我们已经成功安装并配置了客户端和服务器,现在我们可以注册一个用户到一个特定的主题,接下来就是等待发布者传入消息。我们可以使用下面的命令来注册一个用户:

如上所示,用户正在等待消息。在这个例子中,我们使用的主题叫swa_news。现在,我们使用MQTT发布者发送主题为swa_news的消息。

这个例子中,MQTT发布者发送了消息“Hello Protocol”,在用户端,我们得到了如下的消息:

如何在Android设备上使用MQTT

最后,我们将使用一个Android MQTT客户端来接收我们发送的消息。下面的视频向我们展示了如何配置一个Android MQTT客户端。

https://www.youtube.com/embed/plnbafCBVtU

本文希望你通过此文学习到了什么是MQTT协议以及如何使用MQTT向客户端发送消息。

其它翻译版本 (1) 加载中 本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。 2KB翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。


2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务

  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【计算机/互联网|】Nginx出现502错误(2020-01-20 21:02)
【计算机/互联网|】网站运营全智能软手V0.1版发布(2020-01-20 12:16)
【计算机/互联网|】淘宝这是怎么了?(2020-01-19 19:15)
【行业动态|】谷歌关闭小米智能摄像头,因为窃听器显示了陌生人家中的照片(2020-01-15 09:42)
【行业动态|】据报道谷歌新闻终止了数字杂志,退还主动订阅(2020-01-15 09:39)
【行业动态|】康佳将OLED电视带到美国与LG和索尼竞争(2020-01-15 09:38)
【行业动态|】2020年最佳AV接收机(2020-01-15 09:35)
【行业动态|】2020年最佳流媒体设备:Roku,Apple TV,Firebar,Chromecast等(2020-01-15 09:31)
【行业动态|】CES 2020预览:更多的流媒体服务和订阅即将到来(2020-01-08 21:41)
【行业动态|】从埃隆·马斯克到杰夫·贝佐斯,这30位人物定义了2010年代(2020-01-01 15:14)
联系我们

Q Q: 7090832

电话:400-0011-990

邮箱:7090832@qq.com

时间:9:00-23:00

联系客服
商家入住 服务咨询 投拆建议 联系客服
0577-67068160
手机版

扫一扫进手机版
返回顶部