mqtt

BUG脱坑日志

匿名 (未验证) 提交于 2019-12-03 00:22:01
第一篇博客,不当之处请交流! 首先说明下BUG: 项目上要用MQTT实现消息实时推送,后台采用 org.eclipse.paho.client.mqttv3-1.0.1.jar .页面上采用 paho-mqtt.js MQTT服务用的别人家的产品 EMQ . 后来问题来了,客户由于安全问题,不给开端口......就是不能采用EMQ这个产品了 只能在自己的项目下开MQTT服务的TCP连接和websocket连接,后台服务服务写好后测试JS中websocket连接. 连接没有问题,连接成功,接收消息时,BUG出现 由于后台写MQTT消息时格式不严谨,出现了畸形的数据 经研究发现:除了message.payloadString方法外,还有message.payloadBytes方法,返回的是Uint8Array对象. 直接将Uint8Array对象转换成String,上代码 好了,拿上对象继续做处理,BUG处理完毕,至于测试_1为什么乱码,这里就不做说明了,有兴趣的自己研究下吧! 第一次写博客,有不适当的可以评论指出,下次修改,以后会继续将工作中的BUG以博客的形式发布,为了自己的记忆,也为了和大家讨论! 文章来源: BUG脱坑日志

SpringBoot+mqtt + ActiveMq + mqttws31.js 实现后台向前台推送消息

匿名 (未验证) 提交于 2019-12-03 00:19:01
SpringBoot版本:1.4.4.RELEASE ActiveMq版本:5.15.4 后台代码: pom文件除常规配置外加入: <dependency> <groupId>org.springframework.integration</groupId> <artifactId>spring-integration-mqtt</artifactId> </dependency> 加入配置类: import java.util.Random; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.integration.annotation.ServiceActivator; import org.springframework.integration.channel.DirectChannel; import org.springframework.integration.endpoint.MessageProducerSupport; import org.springframework.integration.mqtt.core

Windows安装EMQ服务器(mqtt)

匿名 (未验证) 提交于 2019-12-03 00:13:02
先去EMQ官网下载安装包 https://www.emqx.io/downloads#broker 注意:此处一定不能下错成企业版的,不然EMQ会由于缺少企业license无法启动服务 解压到任意路径 注意:路径不能包含中文或者空格,不然可能会出错 然后切换到emqx/bin目录下,shift+右键,打开powershell 输入命令 然后等待一段时间后 接下来可以下载mqtt客户端应用程序进行测试,这里我下载的是paho客户端进行调试(需要安装JAVA环境) 这里是paho客户端所有版本的地址 https://repo.eclipse.org/content/repositories/paho-releases/org/eclipse/paho/org.eclipse.paho.ui.app/1.0.2/ 下载这个包: org.eclipse.paho.ui.app-1.0.2-org.eclipse.paho.ui.app.executable.win32.win32.x86_64.zip 调试方法参见下面这个博客: https://blog.csdn.net/a704397849/article/details/88533875 遇到问题: 来源:博客园 作者: virgil_devil 链接:https://www.cnblogs.com/virgildevil/p

MQTT的Res接口发布消息

匿名 (未验证) 提交于 2019-12-03 00:11:01
MQTT(这里采用的V2版本)发布消息的常见方法: 1、通过MQTT客户端连接MQTT服务器,建立长连接,通过接口发布消息 最常见的客户端: <dependency> <groupId>org.eclipse.paho</groupId> <artifactId>org.eclipse.paho.client.mqttv3</artifactId> <version>1.1.0</version> </dependency> 发布接口示例(连接过程省略...) //发布消息 try { MqttMessage message = new MqttMessage(); message.setQos(1); //保证消息能到达一次 message.setRetained(true); message.setPayload("我喜欢做测试,咋地了捏".getBytes()); client.publish(publishTopic,message); } catch (MqttException e) { System.out.println("publish fail"); e.printStackTrace(); } 2、通过MQTT提供的Rest接口发布消息 MQTT官网介绍: https://docs.emqx.io/broker/v2/cn/rest.html

mqtt 与 MQ 的区别

匿名 (未验证) 提交于 2019-12-02 23:59:01
mqtt 与 MQ 的区别: mqtt :一种通信协议,类似人类交谈中的汉语、英语、俄语中的一种语言规范 MQ :一种通信通道,也叫消息队列,类似人类交谈中的用电话、email、微信的一种通信方式 json :一种内容格式,类似人类交谈中的排比句等方式 市面上的MQ产品很多,如阿里自研并开源RocketMQ,还有类似RabbitMQ、ActiveMQ,他们不管支持MQTT协议,还支持如AMQP、stomp协议等等, EMQ 使用的协议是mqtt 。 详细区别: 有三个基本概念:消息、消息协议、消息队列。 消息 :信息的载体 消息协议 :为了让消息发送者和消息接收者 都能够明白 消息所承载的信息(消息发送者需要知道如何构造消息;消息接收者需要知道如何解析消息),它们就需要按照一种统一的格式描述消息,这种统一的格式称之为消息协议。所以,有效的消息一定具有某一种格式;而没有格式的消息是没有意义的。 消息队列 :消息从发送者到接收者的方式也有两种。 一种为 即时消息通讯 ,也就是说消息从一端发出后(消息发送者) 立即就可以达到另一端( 消息接收者),这种方式的具体实现就是我们已经介绍过的 RPC ( 当然单纯的http通讯也满足这个定义 ); 另一种为 延迟消息通讯 ,即消息从某一端发出后,首先进入一个 容器进行临时存储 ,当达到某种条件后,再由这个容器发送给另一端。

初始mqtt服务

匿名 (未验证) 提交于 2019-12-02 23:59:01
mqtt意为消息队列遥测传输,是IBM开发的一个即时通讯协议。由于其维护一个长连接以轻量级低消耗著称,所以常用于移动端消息推送服务开发。 mqtt协议控制报文的格式包含三部分: 以固定报头、可变报头和有效载荷,其中固定报文头是所有控制报文都有的,可变报头和有效载荷都是部分控制报文。 mqtt是二进制的协议,控制字段是精确到Bit级别的,单纯这一点就足以为其在物联网领域占据一席之地。mqtt是不支持分包等机制,并不适宜一些数据包特别大的应用场景。 使用发布/订阅消息模式,提供一对多消息发布; 对负载内容屏蔽的消息传输; 使用TCP/IP进行网络连接; 具有三种消息发布服务质量选项: 1."至多一次",通常app的推送使用的是这种模式,也就是说,如果移动设备在消息推送的时候没有联网,那么再次联网就不会收到通知了; 2."至少一次",可以确保消息收到,但消息可能会重复; 3."只有一次",确保消息到达一次,比如计费系统,如果出现消息重复或者丢失会导致系统结果不正确的问题。 小型传输,开销很小,协议交换最小化,以降低网络流量; 通知有关各方客户端异常中断的机制。 发布者----发布消息---->代理-------推送消息----->订阅者 发布者----发布消息---->代理<------订阅消息-----订阅者 在mqtt协议中有三种身份: 发布者(publish):发布者是客户端

MQTT协议

匿名 (未验证) 提交于 2019-12-02 23:52:01
简介: MQTT协议(Message Queuing Telemetry Transport)(消息队列遥测传输),是IBM公司于1999年提出的。MQTT是一个基于TCP的发布订阅协议,设计的初始目的是为了极有限的内存设备和网络带宽很低的网络不可靠的通信,非常适合物联网通信。 MQTT 可以被解释为一种低开销,低带宽占用的即时通讯协议,可以用极少的代码和带宽的为连接远程设备提供实时可靠的消息服务,它适用于硬件性能低下的远程设备以及网络状况糟糕的环境下,因此 MQTT 协议在 IoT(Internet of things,物联网),小型设备应用,移动应用等方面有较广泛的应用。 IoT 设备要运作,就必须连接到互联网,设备才能相互协作,以及与后端服务协同工作。而互联网的基础网络协议是 TCP/IP,MQTT 协议是基于 TCP/IP 协议栈而构建的,因此它已经慢慢的已经成为了 IoT 通讯的标准。 工作原理: MQTT 协议提供一对多的消息发布,可以解除应用程序耦合,信息冗余小。该协议需要客户端和服务端,而协议中主要有三种身份:发布者(Publisher)、代理(Broker,服务器)、订阅者(Subscriber)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,而消息发布者可以同时是订阅者,实现了生产者与消费者的脱耦。 基本特点: 使用 TCP/IP 提供网络连接

MQTT 遗嘱使用

匿名 (未验证) 提交于 2019-12-02 23:52:01
大部分人应该有这个需求: 设备端只需要这样设置 注意:MQTT本身有遗嘱设置 所以需要下一步 这样的话,就可以了,只要APP或者上位机或者网页一启动,那么所有设备的当前状态都会主动的上来了 可以看一下我ESP8266 设置的,无论用的啥子语言开发的,自行找API实现就可以 然后说明一点 MQTT都有心跳包时间实际上就是每隔多少时间向服务器 发送C0 00 服务器判断客户端掉线是: 假设设置的心跳包是 5S 那么如果超过 5*1.5 = 7.5S 服务器没有接收到心跳包,那么服务器就认为设备掉线了 此时服务器会把掉线的那台设备的遗嘱发给 相应的上位机

dz̸MQTT

匿名 (未验证) 提交于 2019-12-02 23:49:02
一、什么是MQTT MQTT协议是一种轻量级协议,作为一种低开销、低带宽占用的即时通讯协议,常被应用于物联网项目。同样基于订阅/发布模式的中间件有ActiveMQ,Kafka等消息中间件,归根结底实现的都是消息的传输。 二、如何理解MQTT MQTT的是一种应用层协议,每一种协议都有其适用场景,而MQTT常被应用于消息推送,消息采集。例如温度检测仪器定时上传温度、检测矿洞氧气浓度等。 MQTT是基于TCP/IP的一种应用层协议,TCP/IP本身已实现了在不可靠的网络环境提供可靠的网络传输的功能,而MQTT协议也有其保障消息可靠传输的策略。 MQTT推送的消息有三种消息质量 1.至多一次,即消息只推送一次,至于消息有没有推送成功 2.至少一次,需要确认消息到达,可能会导致收到重复数据( 注:MQTT定义的重发机制与tcp的重复机制是不同的,tcp的重复机制是在限定时间内如果没有收到对应序号的响应报文,则会重新推送该序列号对应的报文,而MQTT的重发机制是在客户端重新建立连接时, 补发之前没有对应响应报文的数据包,当然客户端可以选择是否要接收这些之前没有传输成功的数据包。最开始使用netty实现MQTT服务器的时候就理解错了,以为MQTT的重复机制与tcp的重复机制一样 ) 3.只有一次,确认消息只到达一次,常用于对数据要求严格的场景,例如计费场景,订单场景 三、如何使用MQTT

mqtt mosquitto 安装与使用

匿名 (未验证) 提交于 2019-12-02 23:49:02
2,安装客户端paho.mqtt.python import timeHOST="127.0.0.1"//mosquitto 安装的主机ip,127.0.0.1 表示与mosquitto在同一机器上PORT=1883client=mqtt.Client()def on_connect(client,userdata,msg): print("on_connect") passdef on_dis_connect(client,userdata,msg): print("on_dis_connect") passdef mqtt_sub(topic): client.subscribe(topic,1)def mqtt_pub(topic,payload): client.publish(topic,payload,1,1)def mqtt_init(on_message): client.connect(HOST,PORT,60) client.on_connect=on_connect client.on_disconnect=on_dis_connect client.on_message = on_message client.loop_start() def on_message(client,userdata,msg): print(msg.topic+":+"+str