弱龄寄事外,委怀在琴书。这篇文章主要讲述Mosquitto搭建Android推送服务番外篇一:各种报错解决相关的知识,希望能为你提供帮助。
文章钢要:目前笔者在开发搭建Mosquitto服务器,在此期间遇到很多实际问题,所以走了很多弯路,在这里写出来为大家提供一些帮助。
1、安装完成后启动Mosquitto报错
执行mosquitto客户端程序时出现找不到动态库:libmosquitto.so.1
./mosquitto_sub: error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: No such file or directory
解决方法:
执行命令
sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1
和
ldconfig
即可
2、启动Mosquitto服务器时配置文件报错
Invalid user \'mosquitto\'.
[root@localhost src]# ./mosquitto 1437558553: Error: Invalid user \'mosquitto\'.
这是因为配置文件里没有当前用户,有2中解决方法:
1.修改配置文件:mosquitto.conf ,增加登录的用户,例如当前登录用户为root。
文章图片
2.执行命令增加当前用户: adduser mosquitto
文章图片
3、重启Mosquitto
笔者在网上找了很多资料都没有提起怎样重启服务器,并且在官网上也没有相应命令提示。
所以我们使用Liunx终止进程命令,强行退出。
先kill掉,再重启:
[root@localhost ~]# ps -A | grep mosquitto 21674 ?00:02:38 mosquitto [root@localhost ~]# kill -9 21674
4、连接无响应
服务器正常开启,但是远程发布信息的时候会有如下提示:
no route to host 这时远程服务器上防火墙将信息连接,所以执行下面命令问题解决[zhoulei@localhost ~]$ sudo iptables -F 5、桥接(bridge)时前缀设置设置 在做桥接时会有如下配置:connection Bridge address 192.168.0.100:1883 topic rootdir/# both 2 localprefix/ remoteprefix/ connection Bridge2 address 192.168.0.101:1883 topic rootdir/# both 2 localprefix/ remoteprefix/主服务器与2台从服务器做了桥接,在100服务器上订阅消息
mosquitto_sub -t remoteprefix/rootdir/#
在100与101服务器上发布消息
mosquitto_pub -t remoteprefix/rootdir/ -m "Hello word"
上述订阅者可以收到“Helloworld”。如果在主服务器上发布消息就要使用
mosquitto_pub -t localprefix/rootdir/ -m “Hello world”
订阅者才能收到消息。因此会产生一个问题在写代码的时候,需要区分是主服务器还是从服务器。以便增加本地前缀或者远程前缀。会给编程带来很多麻烦。
【Mosquitto搭建Android推送服务番外篇一(各种报错解决)】为了解决这个问题可以将2个前缀名称写成一致即可。如下:
connection Bridge address 192.168.0.100:1883 topic rootdir/# both 2 prefix/ prefix/ connection Bridge2 address 192.168.0.101:1883 topic rootdir/# both 2 prefix/ prefix/
推荐阅读
- 在Android开发中如何判读当前设备是否连接网络
- Android开发-之五大布局
- 菜鸟的Android学习之旅
- 二叉树(二叉树的类型有哪些(详细指南))
- Python如何使用round()函数(代码示例)
- 如何实现模式搜索Boyer Moore算法(详细解析和实现)
- CSS如何实现下拉菜单(代码实现详细解释)
- Linux如何使用kill命令(用法示例)
- 如何使用O(1)额外空间从字符串中删除重复项()