mqtt入门

来源:互联网 发布:php电商系统 编辑:程序博客网 时间:2024/05/21 11:02

什么是MQTT

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和制动器(比如通过Twitter让房屋联网)的通信协议。–摘自百度百科

MQTT主要用途

对比HTTP协议,MQTT有协议轻量,长连接,双向通讯等优点。MQTT最少只需要一个两个字节的固定头部(Fixed Header),所以被用作物联网、消息推送等场景。
比如Android手机消息的推送,共享单车向服务器传输付款信息,收取开锁的信息,等等。共享单车不可能有WiFi,也许是其他的通讯工具,网络信号差,不稳定,所以mqtt对比http有一定的优越性。

MQTT使用

MQTT只是类似于HTTP一样的通讯一些而已,就像我们要使用HTTP需要一个客户端(浏览器),一个服务器(Apache、nginx)还需要自己设定传输的数据,比如HTML,CSS,JAVA、PHP等语言,数据库等。我们在使用MQTT的时候也需要自己开发一定的功能。
庆幸的是,目前已经有很多开源的Client、Broker库,我们可以用nodejs、java、C等对其进行二次开发。

mqtt的简单使用

我在网络上搜寻过很多博客,大多讲解的是mqtt相关软件的安装,满足不了大部分开发者的要求。为了本文的连贯性,本文也就如何安装进行一定的讲解。
如果你使用的是Ubuntu16的系统,恭喜你,只需要输入
sudo apt install mosquitto
即可安装mosquitto的客户端和broker。

通俗一点

其实官方的说一大堆,很多人还是一头雾水,其实mqtt是基于tcp协议的,就相当于一个美女穿了身紧身的旗袍,婀娜多姿。http类似于一个美女穿了秋衣秋裤,棉袄,毛衣,虽然暖和,但是很有束缚。
mqtt主要有以下几个部分:
服务器,客户端,他们之间通讯有一个主题。
打个比方,你喜欢张学友,但是没有办法跟张学友直接联系,然后你查到张学友经纪人的电话。但是经纪人说了,只有商业活动,张学友才会和你联系,其他闲聊面谈。碰巧,你有一个商场开业,需要张学友来唱歌。
于是我们知道你,张学友,是两个客户端,经纪人就是服务器,broker,他负责把你们的消息相互转达,但是需要一个主题,商场开业,只有你们都关注了商场开业,才可能相互传递信息。
mqtt主要元素就是服务端,客户端和主题,其主要动作就是订阅这个主题,然后服务器负责转发他们之间传来的消息。

遗嘱

这个概念对于物联网非常重要。比如需要检测一个热水器的开关机。我们知道热水器最起码得联网、有电才能传输信息。
如果突然停电了,那么我们如何才能知道热水器已经关机了?心跳机制是TCP通讯的一个重要概念,每个一段时间,他们彼此都要告诉对方还活着。
mqtt里面有一个概念叫做遗嘱,当热水器开机之后,连接服务器,并且告诉服务器如果自己死掉,该告诉订阅本主题的客户端什么信息。
比如热水器client.setWill(“停电了,我死的好惨啊。”);
我们的手机要遇到热水器意外断电、断网时就会接到,停电了,我死的好惨的消息。