mqtt.js

2023-11-13

什么是MQTT协议

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。

MQTT特点

MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,最大优点在于,用极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。
做为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。

什么是MQTT的发布订阅模式

MQTT使用的发布/订阅消息模式,它提供了一对多的消息分发机制,从而实现与应用程序的解耦。
这是一种消息传递模式,消息不是直接从发送器发送到接收器(即点对点),而是由MQTT server(或称为 MQTT Broker)分发的
在这里插入图片描述

mqtt.js的API解读

  • mqtt.connect(url, options)

URL 可以使用以下协议:‘mqtt’、‘mqtts’、‘tcp’、‘tls’、‘ws’、‘wss’、‘wxs’、‘alis’
OPTIONS:
1.wsOptions:是 WebSocket 连接选项。默认为{}。参考
2.keepalive:60秒,设置0为禁用
3.reschedulePings: 发送数据包后重新安排 ping 消息(默认true)
4.clientId:客户端id 唯一标识你的客户端的身份
5.clean: boolean 设置为 false 可以在离线时接收 QoS 1 和 2 消息;
6.reconnectionProid: 设置多长时间进行重新连接 单位毫秒
7.connectionTimeout: 设置超时时间
8.protocolID: ‘ MQIsdp’ // 和下面的参数指定mqtt的版本
9.protocolVersion: 3
10.reconnectPeriod: 1000毫秒,两次重新连接之间的间隔。通过设置0禁用自动重新连接。
11.username:用户名
12.password: 密码
13.incomingStore: 传入数据包的存储
14.outgoingStore:用于传出数据包的存储
15.queueQoSZero:如果连接断开,则将传出的 QoS 零消息排队(默认true)
16. customHandleAcks:自定义处理 puback 和 pubrec 数据包的 MQTT 5 功能。它的回调:
customHandleAcks: function ( topic , message , packet , done ) { /*some logic wit colling done(error, reasonCode)*/ }
17.autoUseTopicAlias:使用功能启用自动主题别名
18.autoAssignTopicAlias:启用自动主题别名分配功能
19. authPacket:认证包的设置object
will:{} 当客户端断开连接严重时,代理会自动发送一条消息。参考
20.transformWsUrl: 可选(url, options, client) => url功能 仅适用于 ws/wss 协议。可用于实现重新连接后可能已过期的签名 url。
21.resubscribe:如果连接断开并重新连接,订阅的主题会自动再次订阅(默认true)
22.messageIdProvider: 自定义 messageId 提供者。当new UniqueMessageIdProvider()设置时,则提供非冲突 messageId

  • mqtt.Client返回一个函数它返回Stream支持connect事件的类的子类。通常一个net.Socket

  • 事件connect:在成功(重新)连接时发出

  • 事件reconnect:重新连接开始时发出。

  • 事件close:断开连接后发出。

  • 事件disconnect:在收到来自代理的断开数据包后发出。MQTT 5.0 功能

  • 事件offline: 当客户端离线时发出

  • 事件error:当客户端无法连接(即 connack rc != 0)或发生解析错误时发出

  • 事件end: 被调用时发出。如果将回调传递给,则一旦回调返回,就会发出此事件

  • 事件message:
    当客户端收到发布数据包时发出
    topic收到包的主题
    message接收数据包的有效载荷
    packet接收到的数据包,在 mqtt-packet中定义

  • 事件packetsend:当客户端发送任何数据包时发出。这包括 .published() 数据包以及 MQTT 用于管理订阅和连接的数据包

  • 事件packetreceive:当客户端收到任何数据包时发出。这包括来自订阅主题的数据包以及 MQTT 用于管理订阅和连接的数据包

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mqtt.js 的相关文章

随机推荐

  • C语言课设学生籍贯信息记录簿(大作业)

    一 任务概述 文章仅供参考 进一步掌握和利用C语言进行课程设计的能力 进一步理解和运用结构化程序设计的思想和方法 初步掌握开发一个小型实用系统的基本方法 二 设计功能 1 创建信息链表并以磁盘文件保存 2 读取磁盘文件并显示输出所有学生的籍
  • alibaba druid数据库连接池详解

    1 介绍 Druid连接池是阿里巴巴开源的数据库连接池项目 Druid连接池为监控而生 内置强大的监控功能 监控特性不影响性能 功能强大 能防SQL注入 内置Loging能诊断Hack应用行为 2 下载 git地址 https github
  • 漏洞信息收集之——指纹识别

    指纹识别 目录 指纹识别 目的 常见指纹检测的对象 常见指纹识别方式 1 特定文件的MD5 2 正常页面或错误网页中包含的关键字 3 请求头信息的关键字匹配 4 部分URL中包含的关键字 比如wp includes dede等URL关键特征
  • luci 开发中一些小总结

    一 只保存不应用 当修改或者增加一项配置后 如果不是点击 保存 应用 按钮 而是点击 保存 按钮 这些配置不会保存各个到配置文件中 而是暂时保存到如下临时目录下 tmp uci 例如 当修改了网络配置 没有应用时 会生成一个 tmp uci
  • vue-quill-editor富文本编辑器多个音频上传显示覆盖问题

    新建的时候没有问题 正常提交 修改时候后台传过来的数据正确 但是渲染会导致前一个audio被后面一个覆盖掉 刷新audio标签就没有了 1 覆盖问题 将代码 that refs editRef content data content 改成
  • vue拖拽实现app或小程序装修界面

    vue拖拽实现app或小程序装修 一 最终效果图 参考引用作者 作者 李白不吃茶v 原作者源代码git地址 大神的源代码 这里是引用 二 需要安装的依赖 安装 vuedraggable 语法 npm install vuedraggable
  • 对于poll的总结

    参考书籍 linux高性能服务器编程 是个人对看书的总结 上文一致 poll系统调用和select类似 个人认为poll和select掌握一个就好了 也是在指定时间内轮询一定数量的文件描述符 以测试其中是否有就绪者 关于poll的原型 in
  • 数字滤波算法(一)——滑动平均滤波算法

    一 数字滤波器简介 数字滤波器是指通过一定的数据逻辑构成的可以滤除输入信号中的特定的噪声的算法 这里所指的数字滤波器主要包括平均值滤波 FIR滤波 CIC滤波等 在之后的实验中 我们将介绍不同数字滤波器的原理 通过MATLAB和FPGA分别
  • 目标检测标签格式转换 Json -> txt

    目标检测标签格式转换 Json gt txt 将Json格式的标签转换为YOLO格式标签 适用于用labelimg标注后 每个图片 对应一个Json标签的场合 import os import shutil import json 需要根据
  • Mask-RCNN应用 - 数据增强基础准备 - labelme 标注24位深RGB标注图转换为8位深RGB标注图

    MaskRCNN入门路径 gt Mask RCNN应用研究方法 持续更新中 如有问题或需要源码 指导 请私聊留下联系方式或用手机打开https m tb cn h fINaraE tk PCzA2jPp4V0进行咨询 本文介绍如何将24位深
  • ubuntu20.04 安装colmap 报错:Cmake error while running “cmake .. -GNinja“ command during installation

    日常Debug 按照官方文档安装Colmap时 在 这两步的时候报错 比如 1 Call Stack most recent call first usr local share cmake 3 27 Modules CMakeDeterm
  • 最全常用正则表达式大全

    一 校验数字的表达式 1 数字 0 9 2 n位的数字 d n 3 至少n位的数字 d n 4 m n位的数字 d m n 5 零和非零开头的数字 0 1 9 0 9 6 非零开头的最多带两位小数的数字 1 9 0 9 0 9 1 2 7
  • eclipse中包里建包

    1 设置Package Presentation 为Hierarchical 最为关键一步 2 在src下新建一个名为com abc hrm的包 名字根据自己需要而定 3 在父包下新建子包a 4 继续在父包 com abc hrm a 下新
  • Java基础学习——Java线程(二)同步代码块、同步方法、Lock锁、死锁程序例子、不同类型的锁

    对于之前买票的练习 又出现多个10张票的情况 这里对这一现象进行分析 对于代码 for int i 1 i lt 100 i if ticketNum gt 0 System out println 我在 this getName 买到了第
  • vue - Vue介绍

    一 初始化Vue脚手架 1 说明 一般脚手架选择最新版本 2 具体步骤 全局安装vue cli脚手架 切换到项目目录 运行 vue create 加一个非主流库的名字 即可创建一个vue项目 运行 npm run serve 将项目在服务器
  • 跳跃线性链表容器

    此容器用于将ArrayList与LinkedList进行结合 利于容纳大量数据之后对容器的中间段进行增删 一般而言 ArrayList的性能总是快于LinkedList 只在容纳大量数据后 对容器的起始区域进行增删时 LinkedList才
  • 浙江大学提出自感知IMU网络精准捕获3D变形

    运动捕捉目前有两种主流方法 视觉捕捉能捕获复杂的三维几何变形 但依赖于昂贵的光学设备并且存在视线遮挡问题 基于IMU的方法虽然简便 但难以捕获细微的3D变形 为了解决这个问题 浙江大学的研究者们提出了一种可配置的自感知IMU传感器网络 解决
  • Rabbitmq入门到进阶看这篇就够了!

    安装前提 安装 erlang windows用户名非中文 可以关注我的公众号 知识追寻者 回复 rabbitmq 获取已经下载好的安装包和配套源码地址 本套教程对应知识追寻者网址 windows安装rabbitmq zszxz com Ra
  • 【IEEE】2022年第四届欧亚计算机科学与信息技术国际会议(FCSIT 2022)

    2022年第四届欧亚计算机科学与信息技术国际会议 FCSIT 2022 重要信息 会议网址 www ecfcsit org 会议时间 2022年12月16 18日 召开地点 中国北京 出版社 IEEE CPS 截稿时间 2022年10月31
  • mqtt.js

    什么是MQTT协议 MQTT Message Queuing Telemetry Transport 消息队列遥测传输协议 是一种基于发布 订阅 publish subscribe 模式的 轻量级 通讯协议 该协议构建于TCP IP协议上