当前位置: 首页 > news >正文

记录一次vue3+mqtt.js连接华为云mqtt的成功经历

首先我用到的开发工具是uniapp+vue3

先贴一个mqttjs官网的示例地址:

MQTT.js教程

官方示例:

const mqtt = require('mqtt')/**** 浏览器环境* 使用协议为 ws 和 wss 的 MQTT over WebSocket 连接* EMQX 的 ws 连接默认端口为 8083,wss 为 8084* 注意需要在连接地址后加上一个 path, 例如 /mqtt*/
const url = 'ws://broker.emqx.io:8083/mqtt'
/**** Node.js 环境* 使用协议为 mqtt 和 mqtts 的 MQTT over TCP 连接* EMQX 的 mqtt 连接默认端口为 1883,mqtts 为 8084*/
// const url = 'mqtt://broker.emqx.io:1883'// 创建客户端实例
const options = {// Clean sessionclean: true,connectTimeout: 4000,// 认证信息clientId: 'emqx_test',username: 'emqx_test',password: 'emqx_test',
}
const client = mqtt.connect(url, options)
client.on('connect', function () {console.log('Connected')// 订阅主题client.subscribe('test', function (err) {if (!err) {// 发布消息client.publish('test', 'Hello mqtt')}})
})// 接收消息
client.on('message', function (topic, message) {// message is Bufferconsole.log(message.toString())client.end()
})

我按照以下的写法均连接失败:

const client = mqtt.connect('mqtt://{hostname}:1883', options)// 基于其他平台的本能之选
const client = mqtt.connect('mqtt://{hostname}:1883/mqtt', options)// 有博客说要加mqtt路径
const client = mqtt.connect('ws://{hostname}:8083/mqtt', options)// 有博客说mqtt本质上是ws协议,得用8083接口

但是实际上华为云的连接方式完全不同:

const client = mqtt.connect('wss://{hostname}:443/mqtt', options)

H5 端禁止直接使用 tcp 协议(浏览器安全限制),必须用 wss:// 且端口为 443,同时华为云的 WebSocket 连接需要加路径 /mqtt(关键!很多人忽略这个路径导致连接无响应)。

并且华为云 IoT 平台的 WebSocket 连接必须包含/mqtt路径,否则会连接失败。

至于为什么用443,华为云的文档中也没有找到明确的解释,期待大佬解答。

http://www.vanclimg.com/news/1135.html

相关文章:

  • 基于深度学习的YOLO框架的7种交通场景识别项目系统【附完整源码+数据集】
  • 开发集合控件的拖拽流程优化——以TreeView为例
  • 第七天
  • 付老师名言
  • [羊城杯 2021]Baby_Forenisc-内存取证-Volatility 2工具下载使用- Volatility 2.6 的 Linux 免安装版(Standalone 版本)
  • 北大 2024 强基数学
  • 【ESP8266】Vscode + platformIo + Esp8266 新建工程 关键步骤
  • Revo Uninstaller Pro专业版领取:2025最佳Windows软件卸载工具
  • Datawhale AI夏令营 Dify入门 Task05 智能客服
  • PlantUML绘制时序图
  • helm环境快速部署实战
  • 用 Python 实现多干扰线图像验证码的识别系统
  • Python 实现多干扰线图像验证码识别
  • 学习链接
  • 03Gin中间件开发与鉴权实践
  • 入门
  • 浅析扫描线
  • CRUD
  • I2C
  • 小新Pad2022刷机记录
  • 最左前缀原则和覆盖索引相关问题
  • 【LeetCode 142】算法:环形链表 II
  • Gin框架介绍
  • 正则表达式中的元字符
  • sequence的启动
  • L. Dynamic Convex Hull 题解
  • 实时通信技术深度对比:WebSocket与SSE的最佳实践(1018)
  • 微服务架构的轻量级解决方案(6064)
  • WebSocket服务端的高效处理(1104)
  • 服务端推送技术的现代实现(6185)