模块
* 代理端(中转消息,守护进程) mosquitto
* 发送消息客户端 mosquitto_pub
* 接收消息客户端 mosquitto_sub
* 管理密码文件 mosquitto_passwd
测试
* 先启动服务进程 mosquitto -d
* 订阅某个频道(news)的消息(监听) mosquitto_sub -t news
* 发送消息(hello)到某个频道(news) mosquitto_pub -t news -m "hello"
* 可以观察到当mosquitto_pub之后,可以在mosquitto_sub看到刚才发送的消息
配置
* 配置文件路径 /etc/mosquitto/mosquitto.conf
* 启动服务进程mosquitto,除了可能用命令行参数,还要以通过配置文件,配置文件更为详细。
* 可以指定ip地址和端口,还可以使用用户名和密码
* 可以添加加密码证书
案例
使用密码
* 创建只读用户user1和可写用户user2和密码都为user1234
** mosquitto_passwd -c /etc/mosquitto/pawd user1 // -c 表示新增一个文件,如果创建第二个用户,不需要-c
** mosquitto_passwd /etc/mosquitto/pawd user2
* 修改配置文件,不允许匿名用户,指定存储用户名和密码的文件路径,和用户读写权限的文件
** 创建自己的配置文件, touch /etc/mosquitto/conf.d/my.conf
```
allow_anonymous false
password_file /etc/mosquitto/pawd
acl_file /etc/mosquitto/acl
```
** 创建用户读写权限的文件/etc/mosquitto/acl
```
user user1
topic read news
user user2
topic write news
```
* 测试
** sudo service mosquitto restart
** mosquitto_sub -t news -u user1 -P user1234
** mosquitto_pub -t news -m "hello" -u user2 -P user1234
5> 测试:
5.1> 打开两个shell窗口
5.2> 订阅一个主题
# mosquitto_sub -t mqtt
5.3> 在另一窗口推送消息
# mosquitto_pub -t mqtt -h localhost -m "new location“
OK 这时会在订阅窗口看到推送的信息
+++++++++++++++====================================++++++++++
mosquitto_sub命令
mosquitto_sub监听指定主题下的消息。
常用参数:
-h
:连接的服务器-p
:连接的端口号(缺省为1883)-u
:用户名-P
:密码(注意P为大写)-V
:协议版本号(注意V为大写)-t
:主题名称,可以使用通配符#和+-v
:输出主题+监听到的消息(否则仅输出监听到的消息)
例如,以下命令使用用户pi
、密码hachina
,连接到10.0.1.105
的1883
端口,监听所有的主题,打印出对应的内容:mosquitto_sub -t "#" -v -u pi -P hachina -h 10.0.1.105
mosquitto_pub命令
mosquitto_pub向指定的主题发送消息
常用参数:
-h
:连接的服务器-p
:连接的端口号(缺省为1883)-u
:用户名-P
:密码(注意P为大写)-V
:协议版本号(注意V为大写)-t
:主题名称-m
:消息体
例如,以下命令在hello/world
主题位置发布消息HELLO, HAChian.io
mosquitto_pub -t hello/world -m "HELLO, HAChian.io" -h 10.0.1.105 -u pi -P hachina