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”

訂閱者才能收到消息。因此會產生一個問題在寫代碼的時候,需要區分是主服務器還是從服務器。以便增加本地前綴或者遠程前綴。會給編程帶來很多麻煩。

為了解決這個問題可以將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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM