网页连接MQTT Broker失败:WebSocket连接报错求助
MQTT WebSocket连接失败排查方案
验证Broker端口连通性
先用命令测试目标端口是否开放:telnet node02.myqtthub.com 8080或nc -zv node02.myqtthub.com 8080,如果连不通,要么是Broker未开启WebSocket监听,要么是防火墙/安全组拦截了该端口。核对WebSocket路径正确性
不同MQTT服务商的WebSocket端点路径可能不同,别默认用/mqtt,去myqtthub的官方说明里确认正确的路径。检查协议类型是否匹配
若Broker配置的是加密WebSocket(WSS),用WS协议肯定连失败。试试切换到wss://node02.myqtthub.com:8083/mqtt(常见WSS端口),或者确认服务商提供的协议类型。排查浏览器跨域限制
如果你的网页是本地file://协议或不同域名下的资源,Broker未配置CORS的话会触发跨域拦截。打开浏览器控制台看是否有CORS相关报错,有就需要在Broker端配置允许你的网页域名跨域访问。检查网页连接代码逻辑
贴出你的网页代码重点核对:客户端ID是否唯一、是否漏填了Broker要求的用户名密码、连接参数是否正确。以Paho.js为例,正确的初始化逻辑大致如下:const client = new Paho.MQTT.Client("node02.myqtthub.com", 8080, "unique-client-id"); client.connect({ userName: "your-username", password: "your-password", onSuccess: () => console.log("Connected"), onFailure: (err) => console.log("Connect failed: ", err) });确保认证信息(如果需要)无误,客户端ID不要重复。
排除网络环境干扰
公司内网、校园网可能存在代理或防火墙拦截WebSocket流量,换手机热点等其他网络测试,看是否能正常连接。
内容的提问来源于stack exchange,提问作者BRYAN ANTONIO GUTIERREZ FERNAN
相关产品推荐
相关产品推荐

