55.1 引言

今天在搞mqtt服务器,因为电脑装了一台Ubuntu虚拟机,所以就在Ubuntu搭建了,然后通过MQTT.fx 1.7.1客户端进行测试,想法很美好。但作为新人,很多东西不熟悉,所以这遇到一个问题,耽误了几个小时,后面经过各种测试才发现问题。

55.2 问题

我遇到的问题是已经在Ubuntu上搭建好mqtt服务器,但是在windows下的MQTT.fx客户端死活连不上,开始以为是配置问题,防火墙问题,后面经过查找果真是配置问题。

原因是Ubuntu安装mosquitto后,其默认的监听ip为回环ip的1883端口,但我windows跟虚拟机时两台主机共一个网段,windows只能访问到虚拟机的IP,但mosquitto服务器监听的不是虚拟机的IP,所以很荣幸连接不上,然后浪费几小时。

后面经过检验和查找,发现mosquitto默认监听了回环IP的端口,所以需要指定mosquitto监听虚拟机的IP和端口就好了。

最后附上我mosquitto的配置文件内容。

配置文件:mosquitto.conf

# Place your local configuration in /etc/mosquitto/conf.d/
#
# A full description of the configuration file is at
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example

pid_file /run/mosquitto/mosquitto.pid

# 消息持久存储
persistence true
persistence_location /var/lib/mosquitto/

# 日志文件

log_dest file /var/log/mosquitto/mosquitto.log

include_dir /etc/mosquitto/conf.d

allow_anonymous false

password_file /etc/mosquitto/pwfile

acl_file /etc/mosquitto/aclfile

# 在这里指定监听服务器主机的IP和端口---我就是卡在这里的
listener 1883 192.168.0.103  

认证配置文件:pwfile

sudo touch /etc/mosquitto/pwfile
sudo mosquitto_passwd /etc/mosquitto/pwfile admin 

执行上述指令后,需要输入两次密码,这是MQTT.fx客户端用来登录MQTT服务器用的,用户名和密码。

用户权限配置文件:aclfile

#user1只能发布以test为前缀的主题,订阅以$SYS开头的主题即系统主题
user lilei
topic write test/#
topic read $SYS/#

#user2只能订阅以test为前缀的主题
user hanmeimei
topic read test/#

该文件作用是,用以指定用户能订阅和发布的能力,这个文件是在找问题的时候参考别人的。

成功页面:

另外,在刚开始的时候,对MQTT.fx参数填页面中的ClientID这个选项挺疑惑,不知要填什么,这个的含义应该是,区别不同主体,即每个人的身份证一样,如果服务器没有限定格式,我们随便填只要唯一就行。

 最后,感谢大佬之前的文章,他们写的很详细,细节内容可以查看我参考的文章,链接如下:

文章链接:

在Ubuntu上安装和使用基于MQTT协议的代理服务器Mosquitto - 程序员大本营

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐