当前位置: 首页 > 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.sczhlp.com/news/529.html

相关文章:

  • 狂神说Java|Java基础
  • 每日题单
  • 在常量时间内实现单向链表的插入与删除
  • cpp的单头文件
  • (阶段三:整合)面向用户 面向商户,场景之:shop
  • 现代Web框架的性能基准测试(6084)
  • 服务端推送技术的现代实现(8430)
  • 跨平台Web服务开发的新选择(1992)
  • Astro机器人流畅运动背后的科技原理
  • 实时通信协议的Rust实现(5234)
  • 现代Web框架的性能基准测试(8409)
  • 现代Web服务器性能革命:我的Rust框架探索之旅(1820)
  • 实战项目:文件分块上传系统(4936)
  • HTTP请求处理的高效封装(8307)
  • 实时通信的革命:WebSocket技术的深度探索(1440)
  • Rust生态系统在Web开发中的优势(9219)
  • 高并发处理的Rust实现方案(2866)
  • 从零开始构建高性能实时聊天系统:Hyperlane框架实战指南(5696)
  • 内存使用效率的终极对决:零拷贝技术的实战应用(9040)
  • 推荐6本书《MLIR编译器原理与实践》、《ONNX人工智能技术与开发实践》、《AI芯片开发核心技术详解》、《智能汽车传感器:原理设计应用》、《TVM编译器原理与实践》、《LLVM编译器原理与实践》
  • 实时通信协议的Rust实现(2554)
  • 零依赖Web框架的设计哲学(5850)
  • 微服务架构的轻量级解决方案(8414)
  • WebSocket服务端的高效处理(1857)
  • 利用数据绑定让动画更智能:在Rive中创建动态黄金计算器
  • 服务器配置的精细化控制(5106)
  • HTTP响应处理的灵活设计(3253)
  • 现代Web框架的性能基准测试(6931)
  • 微服务架构的轻量级解决方案(0378)
  • 实战项目:文件分块上传系统(3902)