目录
1 MQTT & mosquitto及相关代理库和客户端库
1.1 MQTT
MQTT是流行的数据通信或消息传递协议之一,它正广泛用于端对端(M2M)通信,或者在“物联网(LoT)”的计算机网络趋势。
MQTT(Message Queue Transport Telemetry,消息队列传输遥测)是一种具有发布 - 订阅模式的消息传递协议,该协议具有“轻量级”特性,这对于物联网架构非常重要,因为它主要涉及低功耗设备,
例如传感器节点,微控制器等。
MQTT协议的许多用途之一是从嵌入式设备发送传感器数据。
有时我们希望将这些数据发送到我们的智能手机,这可以帮助我们远程监控一些重要的事情。
1.2 mosquitto
Eclipse Mosquitto
是一个开源(EPL/ EDL许可)消息代理库,它实现了MQTT协议版本3.1和3.1.1,像mosquitto这样的消息代理库是有很多的,如ActiveMQ
Apollo
、HiveMQ
、Mosca
、Mosquitto
、RabbitMQ
、EMQ
,但是这个库确实MQTT协议制定作者开发的,而且开源。
Mosquitto是一个轻量级的库,适用于从低功耗单板计算机到完整服务器的所有设备。
Mosquitto
项目还提供了用于实现MQTT客户端的C库,以及非常流行的mosquitto_pub
和mosquitto_sub
命令行MQTT客户端。
MQTT
目前最新协议版本为3.1.1(截至到2018年12月3日),MQTT5
正在开发计划中,接口相对原来版本可能有所改变,计划在mosquitto
2.0发布,从mosquitto
1.6开始接口会开始改变。所以在协议兼容方面,想严格兼容3.1.1版本可以选择mosquitto
1.5版本。
1.3 Phho Android Service
Paho Android Service是一个用Java编写的MQTT客户端库,用于在Android上开发应用程序。
特点:
- 支持MQTT3.1/3.1.1
- 自动重连机制
- 离线缓冲机制
- 支持Websocket协议方式
- 支持标准的TCP方式
- 支持安全传输层协议SSL/TLS
- 支持
临终遗嘱
(LWT) - 消息持久性
2 MQTT服务器搭建
这一章主要详解Linux下的MQTT服务器的安装和配置,采用mosquitto代理库。
2.1 Windows
编译好的二进制文件下载链接: mosquitto-1.5.4-install-windows-x64.exe
安装后可以参考readme-windows.txt
。
2.2 Mac
在Mac系统中,可以通过os x 缺少的套件管理工具Homebrew来安装。先安装好Homebrew
,然后就可以直接用Homebrew来安装mosquitto。
# Mac安装mosquitto命令
brew install mosquitto
2.3 Linux(Ubuntu18.04)
2.3.1 通过安装包管理工具安装
sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
sudo apt-get update
2.3.2 通过源码安装
首先确保依赖的openssl和websocket已经安装好。
# openssl 安装
$ sudo apt-get install openssl
$ sudo apt-get install libssl-dev
# libwebsockets 安装
$ wget https://github.com/warmcat/libwebsockets/archive/v3.1.0.tar.gz
$ tar -zxvf libwebsockets-3.1.0.tar.gz
$ cd libwebsockets-3.1.0
$ mkdir build
$ cd build
$ cmake ..
$ make
$ sudo make install
# mosquitto编译安装