MQTT 协议初探
MQTT 是一种基于代理的发布/订阅的消息协议。与请求/回答这种同步模式不同,发布/订阅模式解耦了发布消息的客户(发布者)与订阅消息的客户(订阅者)之间的关系,这意味着发布者和订阅者之间并不需要直接建立联系。
mqtt 协议采用二进制进行传输,传输数据量很小,因此物联网项目多采用 mqtt 协议进行网络传输.
mqtt 协议不同于 http 等协议的区别是需要一个服务端来提供服务,客户端可以是主题的发布者,同时也可以是主题的订阅者.
花了几分钟画了如下草图:
首先我们需要安装一个 mqtt 的服务端
Mosquitto2.0 安装
针对 ubuntu 系统的话可以直接使用 apt 工具进行安装了
sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa sudo apt-get update sudo apt-get install mosquitto mosquitto-clients
安装完成之后执行
mosquitto -V
显示如下内容则表示安装成功
mosquitto version 2.0.4 mosquitto is an MQTT v5.0/v3.1.1/v3.1 broker. Usage: mosquitto [-c config_file] [-d] [-h] [-p port] -c : specify the broker config file. -d : put the broker into the background after starting. -h : display this help. -p : start the broker listening on the specified port. Not recommended in conjunction with the -c option. -v : verbose mode - enable all logging types. This overrides any logging options given in the config file. See https://mosquitto.org/ for more information. # -c 是指定一个配置文件 # -d 作为守护进程 # -p 是指定端口,默认 1883 # -v 详细日志输出
针对其他系统的话官网和 github 上有详细文档
Mosquitto 官网
github 文档
推荐使用 apt 工具来安装,如果条件不允许也可使用编译安装,编译安装过程如下
sudo apt-get install g++ libssl-dev libc-ares-dev uuid-dev xsltproc docbook-xsl wget https://mosquitto.org/files/source/mosquitto-2.0.4.tar.gz tar zxvf mosquitto-2.0.4.tar.gz cd mosquitto-2.0.4 make && make install
如果 make 时报
cJSON
错误,修改config.mk
文件中的 WITH_CJSON:=yes
为 WITH_CJSON:=no
使用 Mosquitto2.0
首先订阅一个名为testtopic
的主题
mosquitto_sub -v -t testtopic
再开一个窗口,向这个主题发布一条消息
mosquitto_pub -t testtopic -m "Hello World"
订阅主题的窗口显示如下显示
root@homestead:/home# mosquitto_sub -v -t testtopic testtopic Hello World
至此,我们 Mosquitto 已经安装完毕
更多用法见官方文档