一、换源

1、换源(使用阿里的源),请按此文章配置 Ubuntu20.04 安装与换源 – 星辉清梦 (xhqm.xyz)

二、安装mosquitto

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install mosquitto
sudo apt-get install mosquitto-clients
sudo apt-get install libmosquitto-dev

三、mosquitto命令参数

mosquitto -h 指定要连接的域名  默认为localhost
mosquitto -p 指定服务器端口为1883 默认就是1883
mosquitto -c 使用配置文件配置的参数
mosquitto -d 以后台守护进程的形式启动
mosquitto -v 打印消息

//启动服务
#mosquitto [-c config file] [ -d | --daemon ] [-p port] [-v]
mosquitto -c ./mqtt.conf -d  #以mqtt.conf配置的参数启动
//关闭服务
ps -aux | grep mosquitto  #查看mosquitto服务进程ID
kill -9 PID               #杀掉服务进程
,PID为上一步查找的ID
//查看服务状态
sudo systemctl status mosquitto 
//设置用户名、密码
#passwd 指定密码文件
#username 指定用户名
#加-c 生成密码文件,回车后输入两次密码完成配置
#不加-c 使用已有文件,原地增加用户
sudo mosquitto_passwd -c ./passwd username
#配置文件

#port 默认监听的端口
#listener 监听的端口
#protocal 此端口使用的协议
#allow_anonymous 是否允许所有人使用
#password_file 使用的密码文件

port 1885
listener 1886
protocal mqtt
listener 1887
protocal websockets
#监听端口1885,1886,1887
#并设置端口1886使用协议mqtt,设置端口1887使用协议websockets

allow_anonymous false
password_file /etc/mosquitto/passwd
#禁止匿名使用服务器
#指定密码文件

四、mosquitto-clients命令参数

mosquitto_sub 订阅消息

mosquitto_sub -i 指定clientId
mosquitto_sub -I 指定clientId前缀
mosquitto_sub -R 不显示陈旧的消息
mosquitto_sub -k keepalive 每隔一段时间,发PING消息通知broker保持连接,默认为60秒
mosquitto_sub -q 指定希望接收到QoS为什么的消息  默认QoS为0
mosquitto_sub -h 指定要连接的域名  默认为localhost
mosquitto_sub -p 指定服务器端口为1883 默认就是1883
mosquitto_sub -t 订阅topic
mosquitto_sub -c 设定‘clean session’无效,失去连接后再次连接仍能接收的断开时的消息
mosquitto_sub -d 打印debug信息
mosquitto_sub -v 打印消息
mosquitto_sub --will-topic 用户发送Will消息的topic
mosquitto_sub --will-payload 客户端与broker意外断开时发出该消息,配合--will-topic
mosquitto_sub --will-qos Will 的QoS值,配合--will-topic
mosquitto_sub --will-retain 消息被广播后,该消息被保留起来,配合--will-topic

//订阅"192.168.1.1"的8888端口的"hello"topic
mosquitto_sub -h "192.168.1.1" -p 8888 -t "hello"
mosquitto_pub 发布消息


mosquitto_pub -i 指定要给哪个clientId的用户发送消息
mosquitto_pub -I 指定给哪个clientId前缀的用户发送消息
mosquitto_pub -V 指定MQTT协议版本
mosquitto_pub -P 指定broker访问密码
mosquitto_pub -u 指定broker访问用户
mosquitto_pub -q 指定QoS的值(0,1,2)
mosquitto_pub -h 指定要连接的域名  默认为localhost(所有地址可接收)
mosquitto_pub -p 连接端口号
mosquitto_pub -t 指定topic
mosquitto_pub -m 消息内容
mosquitto_pub -n 发送一个空(null)消息
mosquitto_pub -d 打印debug信息
mosquitto_pub -f 将指定文件的内容作为发送消息的内容
mosquitto_pub --will-topic 用户发送Will消息的topic
mosquitto_pub --will-payload 客户端与broker意外断开时发出该消息,配合--will-topic
mosquitto_pub --will-qos Will的QoS值,配合--will-topic
mosquitto_pub --will-retain 消息被广播后,该消息被保留起来,配合--will-topic

//向"192.168.1.1"的8888端口的"hello"topic发送消息"info"
mosquitto_pub -h "192.168.1.1" -p 8888 -t "hello" -m "info"

————20220126 星辉