1 匿名登录
⾸先打开三个终端,
- 启动代理服务:mosquitto -v
-v 详细模式 打印调试信息
默认占⽤:1883端⼝
- 订阅主题:mosquitto_sub -v -t hello
-t 指定订阅的主题,主题为:hello
-v 详细模式 打印调试信息
- 发布内容:mosquitto_pub -t hello -m world
-t 指定订阅的主题,主题为:hello
-m 指定发布的消息的内容
2 ⽤户名密码登录,配置接收的主题
mosquitto 配置文件修改
Mosquitto服务器的配置⽂件为/etc/mosquitto/mosquitto.conf,关于⽤户认证的⽅式和读取的配置都
在这个⽂件中进⾏配置。
allow_anonymous允许匿名
password_file密码⽂件
acl_file访问控制列表
cd 到 /etc/mosquitto
先拷⻉mosquitto.conf.example⼀份为mosquitto.conf
sudo cp mosquitto.conf.example mosquitto.conf
修改里面的内容如下:
添加⽤户信息
添加⽤户名 0voice_mqtt, 密码123456
sudo mosquitto_passwd -c /etc/mosquitto/pwfile 0voice_mqtt
输入两次密码
⾃动⽣成密码⽂件:/etc/mosquitto/pwfile , 对应mosquitto.conf配置的“password_file
/etc/mosquitto/pwfile”路径。
添加topic和⽤户的关系
cd 到 /etc/mosquitto
sudo cp aclfile.example aclfile
在aclfile上末尾加上如下内容:
# write发布权限, mtpic/#代表mtopic这个前缀的主题, 以/分割前缀
topic write mtopic/#
# read订阅权限, mtpic/#代表mtopic这个前缀的主题, 以/分割前缀
user 0voice_mqtt
topic read mtopic/#
而且这里限制了接收的主题
登录演示
3 遗嘱机制
以前没有接触过,先了解下,示意图如下:
正常断开:当客户端正常断开连接时,会向服务端发送DISCONNECT报文,服务端接收到该报文后,就
知道,客户端是正常断开连接,而并非意外断开连接。
意外断线:当服务端在没有收到DISCONNECT报文的情况下,发现客户端“心跳”停止了,这时服务端就
知道客户端是意外断线了。
- 因网络故障或网络波动,设备在保持连接周期内未能通讯,连接被服务端关闭
- 设备意外掉电
- 设备尝试进行不被允许的操作而被服务端关闭连接,例如订阅自身权限以外的主题等
。。。 更新 中