MQTT是一个基于客户端-服务器的消息发布或订阅传输协议,MQTT协议是轻量、简单、开放和易于实现的,如果工作在TCP或IP协议上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布或订阅型的消息协议。
MQTT主要应用在哪些场合?
1、它是一种机器之间通讯 machine-to-machine (M2M)、物联网 Internet of Things (IoT)常用的一种轻量级消息传输协议。
2、适用于网络带宽较低的场合。
3、包含发布、订阅模式,通过一个代理服务器(broker),任何一个客户端(client)都可以订阅或者发布某个主题的消息,然后订阅了该主题的客户端则会收到该消息。
实战 *** 作:模拟客户端接收消息。 import javautilconcurrentScheduledExecutorService; import orgeclipsepahoclientmqttv3MqttClient; import orgeclipsepahoclientmqttv3MqttConnectOptions; import orgeclipsepahoclientmqttv3MqttTopic; import orgeclipsepahoclientmqttv3persistMemoryPersistence; / 模拟一个客户端接收消息 @author Unclue_liu / public class ClientMQTT { public static final String HOST = "tcp://192168177:1883"; public static final String TOPIC1 = "pos_message_all"; private static final String clientid = "12345678"; private MqttClient client; private MqttConnectOptions options; private String userName = "mqtt"; //非必须 private String passWord = "mqtt"; //非必须 private ScheduledExecutorService scheduler; private void start() { try { // host为主机名,clientid即连接MQTT的客户端ID,一般以唯一标识符表示,MemoryPersistence设置clientid的保存形式,默认为以内存保存 client = new MqttClient(HOST, clientid, new MemoryPersistence()); // MQTT的连接设置 options = new MqttConnectOptions(); // 设置是否清空session,这里如果设置为false表示服务器会保留客户端的连接记录,设置为true表示每次连接到服务器都以新的身份连接 optionssetCleanSession(false); // 设置连接的用户名 optionssetUserName(userName); // 设置连接的密码 optionssetPassword(passWordtoCharArray()); // 设置超时时间 单位为秒 optionssetConnectionTimeout(10); // 设置会话心跳时间 单位为秒 服务器会每隔1520秒的时间向客户端发送个消息判断客户端是否在线,但这个方法并没有重连的机制 optionssetKeepAliveInterval(20); //设置断开后重新连接 optionssetAutomaticReconnect(true); // 设置回调 clientsetCallback(new PushCallback()); MqttTopic topic = clientgetTopic(TOPIC1); //setWill方法,如果项目中需要知道客户端是否掉线可以调用该方法。设置最终端口的通知消息 //遗嘱 optionssetWill(topic, "close"getBytes(), 1, true); clientconnect(options); //订阅消息 int[] Qos = {1};//0:最多一次 、1:最少一次 、2:只有一次 String[] topic1 = {TOPIC1}; clientsubscribe(topic1, Qos); } catch (Exception e) { eprintStackTrace(); } } public static void main(String[] args) { ClientMQTT client = new ClientMQTT(); clientstart(); }
MQTT (Message Queuing Telemetry Transport,消息队列遥测传输) 是一种基于 TCP/IP 协议族的应用层协议。MQTT 协议是专门针对硬件性能低下 & 网络状况不稳定的场景设计的,这使得 MQTT 在物联网和移动应用等受限场景得到广泛应用。
目前,MQTT 主要分为两个大版本:
物联网和移动应用场景的特点是硬件性能低下和网络状况不稳定,而 MQTT 协议就是专门针对这种环境设计的,主要在四个方面有优势:
结论:这三种协议并没有绝对的优胜者,最好的协议取决于具体的需求和限制条件。但如果只从带宽、电池、功能多样性这些基本条件看,MQTT 在其中是更占优的选择。
MQTT 协议的设计特性中包含了一项 “高可靠性交付”,它需要一个保证可靠的底层传输层协议,因此 TCP 协议、TLS 协议、WebSocket 协议都可以作为 MQTT 的底层协议。而无连接的 UDP 协议会丢失或重排数据,不能满足 MQTT 协议的传输需要。
MQTT 是基于发布 - 订阅模型 (pub/sub) 的消息传递协议,与请求 - 响应模型不同,发布 - 订阅模型主要有三种角色: publisher & subscriber & subscriber :
当 client 发布某个主题的消息时,broker 会将该消息分发给任何已订阅该主题的 client。通常来说,client 不会存储消息,一旦消息被发送到这些 client,消息就会从 broker 上删除。另外,保留消息、持久连接和服务质量 QoS 可能会导致消息临时存储在 broker 上。
发布 - 订阅模式使得 消息的发布者和订阅者解耦 ,主要体现为空间解耦和时间解耦:
引用自 >
使用Java语言;数据库:Mysql;经典技术组合(MQTT、Spring Boot、Shiro、MyBatis、Druid、Ehcache、Thymeleaf、Bootstrap、Swagger)开发,支持多数据源,支持代码一键生成。
功能模块:
设备管理、开关管理、计划管理、传感器管理、传感器数据展示、报警规则管理、设备日志、用户管理、角色管理、部门管理、岗位管理、菜单管理、字典管理、参数管理、通知公告、 *** 作日志、登录日志、在线用户、定时任务、代码生成、系统接口、服务监控、缓存监控、在线构建器、连接池监视等。
功能特点:
1、硬件使用 ESP8266,基于MQTT协议,自建物联网云平台。
2、支持云固件升级、设备远程重启。
3、支持音频播放、开关、普通灯、调色灯等各种用电设备控制。
4、单个模块可控制8路用电设备开关,可对模块信息、开关信息、计划任务、报警规则等维护管理。
5、云平台可对各类传感器管理,对传感器数据有多种展示方式。可设置阈值报警规则,符合报警规则的可执行自定义的动作。
6、模块具有一键配网功能,变更网络时无需重新烧写程序,方便快捷。
7、控制端可使用任意网络(2G/3G/4G/5G/WiFi/等)控制灯、热水器、电视、电机、窗帘、监控等各种用电设备,不受任何地区限制。
8、可云端存储模块各路开关状态,模块断电或重启后可自动同步云端模块各路开关状态,具有开关状态记录功能。
9、可记录设备所有 *** 作记录,模块、用户上下线记录等,并具有多种类型的数据统计展示。
10、控制设备命令下达后有状态反馈,可确保设备控制命令执行成功,且延时低。
11、具有心跳检测功能,模块掉线或模块重启后模块可自动重连MQTT服务,具有模块上下线提醒功能(平台消息提醒、邮件提醒)。
12、具有定时功能,可指定某一时刻执行、周期执行、延时执行、自定义Cron表达式执行等 *** 作。
13、可多模块接入云平台,可统一管理、控制模块各路设备开关。
14、云平台可对所有用户管理,每个用户可配置不同角色、不同权限,具有权限分配功能。
15、前端采用完全响应式布局,支持电脑、平板、手机等所有主流设备。
17、具有代码一键生成功能(包括控制器、模型、视图、菜单等),方便快速开发。
18、支持多数据源,简单配置即可实现切换。
19、支持菜单、按钮及数据权限分配,亦可自定义数据权限。
20、具有完善的XSS防范及脚本过滤,彻底杜绝XSS攻击。
21、Maven多项目依赖,模块及插件分项目,尽量松耦合,方便模块升级、增减模块。
22、支持服务监控、数据监控、缓存监控等功能。
React Native 是 Facebook 推出并开源的跨平台移动应用开发框架,是 React 在原生移动应用平台的衍生产物,支持 iOS 和安卓两大平台。React Native 使用 Javascript 语言,类似于 HTML 的 JSX,以及 CSS 来开发移动应用,因此熟悉 Web 前端开发的技术人员只需很少的学习就可以进入移动应用开发领域,同时 React Native 也提供了接近原生应用的性能和体验。
MQTT 是一种基于发布/订阅模式的 轻量级物联网消息传输协议 ,可在严重受限的硬件设备和低带宽、高延迟的网络上实现稳定传输。它凭借简单易实现、支持 QoS、报文小等特点,占据了物联网协议的半壁江山。
本文主要介绍如何在 React Native 项目中使用 MQTT,实现客户端与服务器的连接、订阅、取消订阅、收发消息等功能。
这里以创建一个名为 RNMQTTDemo 的项目为例,开发环境为 macOS,应用平台为 iOS,具体过程参考 Setting up the development environment 。
项目创建完成后,在项目根目录环境下,执行以下命令安装所需依赖:
react_native_mqtt 是一个在 React Native 项目中使用的 MQTT 客户端模块,支持 iOS 和 Android。
这里使用 EMQ 提供的免费公共 MQTT 服务器,该服务基于 EMQ 的 MQTT 物联网云平台 创建。服务器接入信息如下:
完整的 RNMQTTDemo 项目地址: >网关在网络层以上实现网络互连,是复杂的网络互连设备,仅用于两个高层协议不同的网络互连。
MQTT物联网PLC网关即wtblnet iot Gateway,是一款支持单网口/两网口/五网口,支持4G/3G/WIFI/PPPOE/WAN有线网络,
内嵌工业控制协议,支持远程自定义配置、远程部署、网关状态监控等技术于一体的内嵌网络 *** 作系统的工业级智能网关。
水利MQTT网关就是水利工程中所有的水利电机、传感器等设备接入到MQTT物联网协议网络。
电力MQTT网关就是电力工程中所有的电机、传感器,发电设备等等设备接入到MQTT物联网协议网络。
水利MQTT网关物联网协议,电力MQTT网关物联网协议传送到客户自定义的MQTT云平台,方便用户利用先进的物联网技术和两化融合技术快速构建一套高效、高并发的工业互联网系统及工业40服务平台。
好像,其中WG585工业智能网关在远程监控解决方案。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)