You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过WebSocket连接CloudMQTT Broker前端页面握手失败问题求助

解决CloudMQTT WebSocket连接重置的问题

嘿,这个WebSocket握手失败+连接重置的问题我之前帮人排查过好几次,大概率是这几个点没弄对,咱们一步步来:

1. 先确认你用对了CloudMQTT的WebSocket端口

CloudMQTT给的端口分好几种:普通MQTT端口、加密MQTT端口、WebSocket端口、加密WebSocket端口。你现在用的是ws://,得对应非加密的WebSocket端口,别把普通MQTT端口当成WS端口用了!登录CloudMQTT控制台,在「Details」页面里找「WebSocket Port」那一项,确认你填的38788是不是这个值。

2. 必须带上正确的身份认证信息

CloudMQTT的Broker是需要用户名密码认证的,前端用Paho连接时,一定要在连接选项里加上用户名和密码,不然Broker直接就把连接掐断了,表现就是连接重置。给你个正确的连接代码示例:

// 创建客户端实例,生成唯一客户端ID避免冲突
const client = new Paho.MQTT.Client("m23.cloudmqtt.com", 38788, "clientId_" + Math.random().toString(16).substr(2, 8));

// 设置连接选项
const options = {
  userName: "你的CloudMQTT用户名",
  password: "你的CloudMQTT密码",
  onSuccess: function () {
    console.log("连接成功!");
    // 发送Hello World到指定主题
    const message = new Paho.MQTT.Message("Hello World");
    message.destinationName = "test/topic";
    client.send(message);
  },
  onFailure: function (err) {
    console.log("连接失败:", err);
  }
};

// 连接Broker
client.connect(options);

注意这里的userName和password要从CloudMQTT控制台的「Credentials」里拿,别填错了!

3. 排查网络和防火墙限制

  • 先试试用curl命令测试连接:curl -i ws://m23.cloudmqtt.com:38788/mqtt,如果还是连接重置,可能是你的网络(比如公司内网、校园网)屏蔽了这个端口,或者CloudMQTT的IP被防火墙拦截了。可以换个网络试试(比如手机热点)。
  • 另外,如果你的前端页面是部署在HTTPS域名下,浏览器会禁止非加密的WebSocket(ws://)请求,这时候得改用wss://加上加密WebSocket端口。

4. 检查CloudMQTT Broker的状态

登录CloudMQTT控制台,看看:

  • 你的Broker是不是处于「Running」状态?
  • 有没有达到连接数上限?免费版的CloudMQTT一般限制同时连接数,要是已经满了,新的连接请求会被直接拒绝。
  • 有没有设置IP白名单?如果你的公网IP不在白名单里,也会被拒绝连接。

如果以上几点都检查过了,还是不行,可以去CloudMQTT的「Logs」页面看看有没有相关的错误日志,能帮你更快定位问题。

内容的提问来源于stack exchange,提问作者DrJempo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 06:57:30