Mosquitto 1.4.14在Windows下WebSocket支持失效,如何解决?
解决Mosquitto 1.4.14 WebSocket连接失败的问题
我之前在使用Mosquitto 1.4.x版本开启WebSocket时也踩过不少坑,结合你的情况,给你一步步梳理解决方案:
一、正确配置Mosquitto 1.4.14的WebSocket支持
Mosquitto 1.4.x版本默认没有编译WebSocket模块,而且配置时容易犯端口混用的错误,按下面步骤来:
1. 确认WebSocket模块已编译
如果你是通过包管理器(比如apt、yum)安装的Mosquitto,大概率默认包不带WebSocket支持,需要重新编译:
- 先安装依赖:Debian/Ubuntu系执行
sudo apt-get install libwebsockets-dev,CentOS/RHEL系对应安装libwebsockets-devel - 下载Mosquitto 1.4.14源码,编译时开启WebSocket:
tar -xf mosquitto-1.4.14.tar.gz cd mosquitto-1.4.14 cmake -DWITH_WEBSOCKETS=ON . make && sudo make install
2. 修正配置文件的错误
你之前的问题很可能是MQTT端口和WebSocket端口混用了!1883是MQTT的默认TCP端口,WebSocket需要单独指定一个端口,比如9001。修改mosquitto.conf,添加以下配置:
# 保留原MQTT端口配置 listener 1883 protocol mqtt # 新增WebSocket监听端口 listener 9001 protocol websockets
3. 重启Mosquitto并验证
- 用指定配置文件重启:
mosquitto -c /path/to/your/mosquitto.conf -v(-v参数会输出详细日志,方便排查) - 检查端口监听:执行
netstat -tulpn | grep mosquitto,如果看到0.0.0.0:9001的监听记录,说明WebSocket端口已开启 - 前端连接地址改为
ws://localhost:9001/mqtt,再测试连接
二、不想折腾?直接用这些支持WebSocket的现成Broker
如果觉得编译老版本太麻烦,可以直接用这些开箱即用的Broker:
- Eclipse Mosquitto 2.x+:新版本默认支持WebSocket,安装后只需在配置文件中添加WebSocket端口即可,无需额外编译
- EMQX:开源高性能MQTT Broker,默认开启WebSocket端口(8083),自带管理界面,适合快速测试和生产环境
- HiveMQ社区版:免费开源,支持WebSocket,配置简单,有可视化管理工具
内容的提问来源于stack exchange,提问作者DRPandya
相关产品推荐
相关产品推荐

