一、secureCRT工具中安装mosquitto
前提条件:secureCRT连接树莓派或者自己的服务器;
1、在http://mosquitto.org/files/source/下载mosquitto源码,我选择的是1.6.9版本;
复制其链接地址
2、树莓派下下载:
3、解压压缩包
tar -xzvf mosquitto-1.6.9.tar.gz
4、进入目录
cd mosquitto-1.6.9/
5、在mosquitto文件夹下我们可以找到config.mk,这里包含了所有mosquitto的安装选项及参数说明,我们可以使用cat config.mk命令查看;
6、编译;
7、可能出现问题及解决方法:
-
编译找不到openssl/ssl.h
安装openssl
sudo apt-get install libssl-dev
-
编译过程g++命令未找到:
sudo apt-get install g++
-
编译过程找不到ares.h
sudo apt-get install libc-ares-dev
-
编译过程找不到uuid/uuid.h
sudo apt-get install uuid-dev
-
使用过程中找不到libmosquitto.so.1
error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: No such file or directory
解决方法——修改libmosquitto.so位置:
创建链接
sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1
更新动态链接库
sudo ldconfig
参考:https://blog.csdn.net/xukai871105/article/details/39252653
二、配置&运行
安装完成之后,所有配置文件会被放到mosquitto目录下,其中最主要的是mosquitto的配置文件,即mosquitto.conf。
1、启动mosquitto服务;
mosquitto -c mosquitto.conf -v
2、关闭或重启;
ps -aux|grep mosquitto
3、用mosquitto进行一个简单的发布/订阅:
-
3.1订阅主题:
mosquitto_sub -v -t “主题”
-v:打印更多的调试信息;
-t:指定主题
-
3.2 发布内容:
mosquitto_pub -t"主题" -m"内容"
-m:指定消息内容
-
3.3需要同时打开三个服务器窗口:
3.3.1开启一个客户端,模拟broker
mosquitto -c mosquitto.conf -v
此时运行mosquitto可能会报错:
参考:https://blog.csdn.net/wanxuexiang/article/details/86731863
liruiyan@cloud-ubuntu18:~/mqtt/mosquitto-1.6.9$ mosquitto -c mosquitto.conf -v
1625733997: mosquitto version 1.6.9 starting
1625733997: Config loaded from mosquitto.conf.
1625733997: Opening ipv4 listen socket on port 1883.
1625733997: Error: Address already in use
说明已经有一个mosquitto服务器在运行:address already in use
执行以下命令:
liruiyan@cloud-ubuntu18:~/mqtt/mosquitto-1.6.9$ ps -aux|grep mosquitto
liruiyan 17357 0.0 0.2 22812 4404 pts/2 S+ 16:20 0:00 mosquitto_sub -v -t topic1
mosquit+ 2240 0.2 0.0 34692 120 ? S 1月30 4:53 mosquitto -v
liruiyan@cloud-ubuntu18:~/mqtt/mosquitto-1.6.9$ kill -9 2240
就会使原来运行的服务器终止运行,再次启动运行:
3.3.2再开启一个客户端,模拟订阅
mosquitto_sub -v -t topic1
在模拟broker客户端中查看:
3.3.3在最后一个客户端模拟发布:
在模拟订阅客户端查看:
由上面的结果显示我们在订阅界面可以实时收到发布的消息;
三、mosquitto部分命令参数说明
-
mosquitto_pub命令参数
-d 打印debug信息
-f 将指定文件的内容作为发送消息的内容
-h 指定要连接的域名 默认为localhost
-i 指定要给哪个cilentld的用户发送消息
-l 指定给哪个clientld前缀的用户发送消息
-m 消息内容
-n 发送一个空(null)消息
-p 连接端口号
-q 指定QoS的值(0,1,2)
-t 指定topic
-u 指定broker访问用户
-P指定broker 访问密码
-V 指定MQTT协议版本
–will-payload 指定一个消息,该消息当客户端与broker意外断开连接时发出。该参数需要与–will-topic一起使用
–will-qos Will的QoS值。该参数需要与–will-topic一起使用
–will-retain 指定Will消息被当做一个retain消息(即消息被广播后,该消息被保留起来)。该参数需要与–will-topic一起使用
–will-topic 用户发送Will消息的topic。
-
mosquitto_sub 命令参数说明
-c 设定‘clean session’为无效状态,这样一直保持订阅状态,即便是已经失去连接,如果再次连接仍旧能够接收的断开期间发送的消息。
-d 打印debug信息
-h 指定要连接的域名 默认为localhost
-i 指定clientld
-l 指定clientld前缀
-k keepalive 每隔一段时间,发PING消息通知broker,仍处于连接状态。 默认为60秒。
-q 指定希望接收到QoS为什么的消息 默认QoS为0
-R 不显示陈旧的消息
-t 订阅topic
-v 打印消息
–will-payload 指定一个消息,该消息当客户端与broker意外断开连接时发出。该参数需要与–will-topic一起使用
–will-qos Will的QoS值。该参数需要与–will-topic一起使用
–will-retain 指定Will消息被当做一个retain消息(即消息被广播后,该消息被保留起来)。该参数需要与–will-topic一起使用
–will-topic 用户发送Will消息的topic