作者:啊123 | 来源:互联网 | 2023-10-15 11:56
1mosquitto服务器的搭建服务器这里使用了阿里云的服务器,mosquitto默认需要1883的TCP入端口。需要在安全策略里设置一下。端口当然也可以选其他端口进
1 mosquitto服务器的搭建
服务器这里使用了阿里云的服务器,mosquitto默认需要1883的TCP入端口。需要在安全策略里设置一下。端口当然也可以选其他端口进行配置。
# 服务器终端安装mosquitto和mosquitto-clients,后者是一些客户端,方便我们测试用
sudo apt install mosquitto mosquitto-clients
sudo systemctl status mosquitto
mosquitto_sub 命令参数说明
1. -c 设定‘clean session’为无效状态,这样一直保持订阅状态,即便是已经失去连接,如果再次连接仍旧能够接收的断开期间发送的消息。
2. -d 打印debug信息
3. -h 指定要连接的域名 默认为localhost
4. -i 指定clientId
5. -I 指定clientId前缀
6. -k keepalive 每隔一段时间,发PING消息通知broker,仍处于连接状态。 默认为60秒。
7. -q 指定希望接收到QoS为什么的消息 默认QoS为0
8. -R 不显示陈旧的消息
9. -t 订阅topic
10. -v 打印消息
11. --will-payload 指定一个消息,该消息当客户端与broker意外断开连接时发出。该参数需要与--will-topic一起使用
12. --will-qos Will的QoS值。该参数需要与--will-topic一起使用
13. --will-retain 指定Will消息被当做一个retain消息(即消息被广播后,该消息被保留起来)。该参数需要与--will-topic一起使用
14. --will-topic 用户发送Will消息的topic
# mosquitto_sub 订阅消息
# -h :指定服务器地址
# -p :指定端口
# -t :指定topic
mosquitto_sub -h localhost -p 1883 -t "demo/1"
mosquitto_pub 命令参数说明
1. -d 打印debug信息
2. -f 将指定文件的内容作为发送消息的内容
3. -h 指定要连接的域名 默认为localhost
4. -i 指定要给哪个clientId的用户发送消息
5. -I 指定给哪个clientId前缀的用户发送消息
6. -m 消息内容
7. -n 发送一个空(null)消息
8. -p 连接端口号
9. -q 指定QoS的值(0,1,2)
10. -t 指定topic
11. -u 指定broker访问用户
12. -P 指定broker访问密码
13. -V 指定MQTT协议版本
14. --will-payload 指定一个消息,该消息当客户端与broker意外断开连接时发出。该参数需要与--will-topic一起使用
15. --will-qos Will的QoS值。该参数需要与--will-topic一起使用
16. --will-retain 指定Will消息被当做一个retain消息(即消息被广播后,该消息被保留起来)。该参数需要与--will-topic一起使用
17. --will-topic 用户发送Will消息的topic
# -m :指定消息内容
mosquitto_pub -h localhost -p 1883 -t "demo/1" -m "test"
# 查看mosquitto服务进程ID
ps -aux | grep mosquitto# 杀掉服务进程
# PID 为上一步查找的ID
kill -9 PID
例如:
启动命令#
mosquitto [
-
c config
file
] [
-
d |
-
-
daemon ] [
-
p port number] [
-
v]
- -c 后面跟的是启动mosquitto可以调整的参数,比如是否开启基本认证,端口是什么,SSL单向和双向的认证配置等等。
- -d 表示MQTT mosquitto将在后台运行。
- -p 代表当前的mosquitto服务实例启动以后,其监听端口号,这个配置的覆盖[-c config file] 指定的配置文件中的端口
- -v 代码调试模式(verbose)可以输出更多的信息
# /etc/mosquitto/mosquitto.conf 为服务器配置文件
# -d :指定服务于后台
mosquitto -c /etc/mosquitto/mosquitto.conf -d
2 服务器配置
2.1监听端口配置
配置文件在/etc/mosquitto/mosquitto.conf,不过我们一般不修改这个文件,而是把.conf文件放到/etc/mosquitto/conf.d/下,这里举个配置端口的例子,在/etc/mosquitto/conf.d/下,新建port.conf文件,输入下面内容,可以让mosquitto服务器同时监听1885,1886,1887端口,并且把1886的协议为mqtt,1887端口协议为websockets,各取所需
port 1885
listener 1886
protocal mqtt
listener 1887
protocal websockets
2.2 用户名密码配置
# 通过用户名密码更加安全
# passwd 指定密码文件
# username 指定配置的用户名
# 回车后输入两次密码完成配置
# 这里加上-c 是让他生成密码文件,不加-c 代表已有文件,原地增加用户,第二次配置不需要输入-c
sudo mosquitto_passwd -c /etc/mosquitto/passwd username
接着在/etc/mosquitto/conf.d/下新建passwd.conf输入下面命令
allow_anonymous false
password_file /etc/mosquitto/passwd
按照1步骤重启服务器