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

Node.js中从mqtts切换为wss协议连接MQTT Broker失败问题

问题:WSS协议连接MQTT Broker时遭遇连接拒绝

我能通过以下代码成功使用MQTTS协议连接MQTT Broker:

mqtt = require('mqtt')

let options = {
    host: '0d9d5087c5b3492ea3d302aae8e5fd90.s2.eu.hivemq.cloud',
    port: 8883,
    path: '/mqtt',
    clientId: 'mqttx_2d803d2743',
    protocol: 'mqtts',
    username: 'light29',
    password: 'Mqtt29@!',
    cleanSession: true,
}

// 初始化MQTT客户端
let client = mqtt.connect(options);

// 设置回调函数
client.on('connect', function () {
    console.log('Connected');
});

client.on('error', function (error) {
    console.log(error);
});

client.on('message', function (topic, message) {
    // 收到消息时触发
    console.log('Received message:', topic, message.toString());
});

// 订阅主题'mytest'
client.subscribe('mytest');

// 向主题'mytest'发布消息'Hello'
client.publish('mytest', 'Hello');

运行结果符合预期:

Connected
Received message: mytest Hello

尝试改用WSS协议连接同一Broker,修改配置如下:

let options = {
    host: '0d9d5087c5b3492ea3d302aae8e5fd90.s2.eu.hivemq.cloud',
    port: 8884,
    path: '/mqtt',
    clientId: 'mqttx_2d803d2743',
    protocol: 'wss',
    username: 'light29',
    password: 'Mqtt29@!',
    cleanSession: true,
}

但此时出现连接拒绝错误:

Error: connect ECONNREFUSED 127.0.0.1:8884
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1161:16) {
  errno: -61,
  code: 'ECONNREFUSED',
  syscall: 'connect',
  address: '127.0.0.1',
  port: 8884
}

解决方案

  1. 检查Broker的WSS端口状态
    确认你的HiveMQ Cloud Broker是否开启了WSS服务,且端口8884是否对外开放。部分MQTT服务提供商可能需要在控制台手动启用WSS端口。

  2. 修正连接参数的写法
    使用WSS协议时,建议直接通过完整URL的方式初始化连接,避免单独配置host、port、path可能导致的解析问题:

    const url = 'wss://0d9d5087c5b3492ea3d302aae8e5fd90.s2.eu.hivemq.cloud:8884/mqtt';
    let options = {
        clientId: 'mqttx_2d803d2743',
        username: 'light29',
        password: 'Mqtt29@!',
        cleanSession: true,
    }
    let client = mqtt.connect(url, options);
    
  3. 确认网络环境
    检查本地网络是否能访问Broker的8884端口,可以用telnet或nc命令测试连通性:

    nc -zv 0d9d5087c5b3492ea3d302aae8e5fd90.s2.eu.hivemq.cloud 8884
    

    如果测试失败,可能是防火墙或代理阻止了该端口的访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 15:50:39