websocket 连接 mosquitto (MQTT)订阅消息(非常详细)

举报
小米粒-biubiubiu 发表于 2020/10/22 11:04:51 2020/10/22
【摘要】 websocket 连接 mosquitto (MQTT)订阅消息(非常详细)

centos7安装mosquitto并支持websocket

1、下载 mosquitto 和 libwebsockets

https://github.com/eclipse/mosquitto/archive/v1.5.1.tar.gz

https://github.com/warmcat/libwebsockets/archive/v1.5-chrome47-firefox41.tar.gz


2、安装编译工具 gcc和g++

yum install gcc-c++

3、安装mosquitto 编译所需的依赖库

yum install openssl-devel
yum install c-ares-devel
yum install libuuid-devel
yum install e2fsprogs-devel
yum install uuid-devel

4、安装cmake(在安装libwebsockets 的时候需要用到)

yum install cmake

5、解压、编译、安装libwebsockets

 tar zxvf libwebsockets-1.5-chrome47-firefox41.tar.gz 
 cd libwebsockets-1.5-chrome47-firefox41
 mkdir build
 cd build 
 cmake ..
 make
 make install

6、解压、修改mosquitto 的配置config.mk使之支持websocket(默认不支持websocket)

tar zxvf mosquitto-1.5.1.tar.gz
cd mosquitto-1.5.1
//将config.mk 的WITH_WEBSOCKETS:=NO 修改 为 WTIH_WEBSOCKETS:=yes
vim config.mk


7、编译、安装mosquitto

make
make install

(1)编译安装过程中可能会报这个错

make[1]: 进入目录“/home/jason/mosquitto-1.2/man”
xsltproc mosquitto.8.xml
warning: failed to load external entity "/usr/share/xml/docbook/stylesheet/docbook-xsl/manpages/docbook.xsl"
compilation error: file manpage.xsl line 3 element import
xsl:import : unable to load /usr/share/xml/docbook/stylesheet/docbook-xsl/manpages/docbook.xsl
compilation error: file mosquitto.8.xml line 4 element refentry
xsltParseStylesheetProcess : document is not a stylesheet
make[1]: *** [mosquitto.8] 错误 5make[1]:
离开目录“/home/jason/mosquitto-1.2/man”
make: *** [docs] 错误 2

这个因为找不到这个文件/usr/share/xml/docbook/stylesheet/docbook-xsl/manpages/docbook.xsl

,所以需要安装docbook-style-xsl。

yum -y install docbook-style-xsl

(2) 查看docbook-style-xsl的安装位置

find / -name docbook.xsl

发现docbook.xsl是在安装在这里

/usr/share/sgml/docbook/xsl-stylesheets-1.78.1/manpages/docbook.xsl

(3)进入到mosquitto-1.5.1/man的目录,编辑manpage.xsl文件

cd mosquitto-1.5.1/man
vim manpage.xsl

(4)将红色边框圈中的原始路径修改为

/usr/share/sgml/docbook/xsl-stylesheets-1.78.1/manpages/docbook.xsl


此时再执行make  && make install 即可成功编译、安装。

8、修改mosquitto的配置文件

cd /etc/mosquitto
cp mosquitto.conf.example mosquitto.conf
vim mosquitto.conf

在Default listener 这里添加 

port  1883          

listener 9001

protocol websockets

这里的port  和 listener 都可以自定义,只要没有端口冲突即可。


修改之后保存并退出。

9、添加mosquitto用户,启动mosquitto服务

adduser mosquitto
//mosquitto -c /etc/mosquitto/mosquitto.conf 前台启动方式 
mosquitto -c /etc/mosquitto/mosquitto.conf -d  //后台启动方式(推荐)

启动时如果报如下错误:


是因为没有找到安装的libwebsockets库,执行如下软链接命令:

ln -s /usr/local/lib/libwebsockets.so.5 /usr/lib64/libwebsockets.so.5

然后关闭mosquitto,再重启


 //首先查看mosquitto 的进程id,然后使用kill 命令指定进程id 即可停止mosquitto服务
 //例如我这里的进程id是9307
 ps -ef | grep mos
 kill -9 9307    
 mosquitto -c /etc/mosquitto/mosquitto.conf -d
 ss -tupln | grep 9001 //查看 9001 websocket 端口是否可以监听到

10、关闭防火墙

systemctl stop firewalld.service
systemctl disable firewalld

11、至此便可以编写websocket客户端连接mosquitto服务并成功发布/订阅消息。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。