Mosquitto配合Paho JS客户端WebSocket连接失败及配置咨询
问题1:JS客户端成功连接MQTT Broker的解决方法
- Mosquitto 2.0及以上版本默认禁止匿名访问,首先修改你的mosquitto配置文件,添加匿名访问权限:
listener 1883 allow_anonymous true listener 9001 protocol websockets allow_anonymous true
- 修改JS连接配置,Paho MQTT客户端默认请求路径为
/mqtt,而Mosquitto websocket默认监听根路径/,需要在连接选项中指定path参数:
var options = { timeout: 3, onSuccess: onConnect, path: "/" };
- 确认代码中填写的host和Mosquitto运行主机的IP一致,你报错日志显示连接的是127.0.0.1,如果是在局域网其他设备访问页面,需要填写Mosquitto主机的局域网IP(也就是你代码里写的192.168.1.94)。
- 检查Windows防火墙设置,开放9001端口的入站规则,测试阶段可以临时关闭防火墙验证连通性。
- 修改配置后重启Mosquitto服务,再打开HTML测试即可。如果后续开发React项目,推荐使用
mqttnpm包,连接配置和上述参数一致,连接成功后订阅对应topic,收到消息后dispatch到Redux即可完成状态更新。
问题2:Mosquitto自定义host配置方法
- 你可以使用
myhost.local这类自定义域名,不需要仅用127.0.0.1或者物理IP。 - Windows系统下修改hosts文件即可实现自定义域名映射,hosts文件路径为
C:\Windows\System32\drivers\etc\hosts,用管理员权限打开后添加如下内容:
192.168.1.94 myhost.local
- 保存后本机访问
myhost.local就会自动解析到192.168.1.94。如果局域网内其他设备也要使用该自定义域名,需要对应修改其他设备的hosts文件,或者在局域网路由器中配置静态DNS解析规则。 - Mosquitto默认监听所有网卡的请求,如果你需要限制仅监听指定IP,可以在listener配置后追加IP,例如
listener 9001 192.168.1.94就只会响应该IP的请求。
内容的提问来源于stack exchange,提问作者toshiomagic
相关产品推荐
相关产品推荐

