文章鋼要:
目前筆者在開發搭建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終止進程命令,強行退出。
[root@localhost ~]# ps -A | grep mosquitto 21674 ? 00:02:38 mosquitto [root@localhost ~]# kill -9 21674
4、連接無響應
服務器正常開啟,但是遠程發布信息的時候會有如下提示:
主服務器與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個前綴名稱寫成一致即可。如下: