使用MqttClient
使用MqttClient
从库中使用MQTT客户端非常简单。首先,您必须创建一个MqttClient类,它只提供一个强制参数(要连接到的代理的IP地址或主机名)和一些具有默认值的可选参数(MQTT Broker端口、安全连接和X.509证书)。在更简单的情况下,您可以使用默认端口(1883),并且不支持基于SSL/TLS的安全连接,使用的是可选参数的默认值,并且只指定代理地址(或主机名)。
1
MqttClient client =
new
MqttClient(IPAddress.Parse(
"192.168.10.53"
));
在连接到代理之前,可以注册到事件。MqttMsgPublishReces在客户端订阅的主题上发布消息时引发。在这种情况下,您必须提供一个事件处理程序来使用MqttMsgPublishEventArgs公开数据字节的讯息财产。
1
2
3
4
5
6
client.MqttMsgPublishReceived += client_MqttMsgPublishReceived;
...
void
client_MqttMsgPublishReceived(
object
sender, MqttMsgPublishEventArgs e)
{
// access data bytes throug e.Message
}
您还可以感兴趣地了解某个主题的订阅和/或取消订阅是否已完成并已向代理注册。在这种情况下,可以为事件定义两个事件处理程序。MqttMsg和MqttMsgUn订阅.
1
2
3
4
5
6
7
8
9
10
11
12
client.MqttMsgSubscribed += client_MqttMsgSubscribed;
client.MqttMsgUnsubscribed += client_MqttMsgUnsubscribed;
...
void
client_MqttMsgUnsubscribed(
object
sender, MqttMsgUnsubscribedEventArgs e)
{
// write your code
}
void
client_MqttMsgSubscribed(
object
sender, MqttMsgSubscribedEventArgs e)
{
// write your code
}
如果使用qos级别1或2在指定主题上发布消息,也可以注册到MqttMsg发布事件,该事件将在将消息传递(准确地说是一次)到主题上的所有订阅者时引发。
1
2
3
4
5
6
client.MqttMsgPublished += client_MqttMsgPublished;
...
void
client_MqttMsgPublished(
object
sender, MqttMsgPublishedEventArgs e)
{
// write your code
}
注册到您感兴趣的所有事件之后,可以使用连接()方法MqttClient类连接到代理。唯一的强制参数是必须是唯一的客户端ID;其他参数有一些默认值,它们与:
- 用于客户端身份验证的用户名和密码(默认值为零没有认证);
- Will Message功能(默认值不提供Will Message);
- 用于在断开连接时删除订阅的干净会话(默认值为千真万确);
- 使用ping消息保持活动期以保持活动连接(默认值为60秒);
在不使用所有MQTT高级特性(身份验证和“Will”消息)的情况下,您可以只指定客户机ID(例如生成的GUID),并使用干净的会话标志设置默认的保持活动周期。
1
client.Connect(Guid.NewGuid().ToString());
若要订阅和取消订阅主题,请将MqttClient类提供订阅()和取消订阅()方法。前者需要主题列表和相对的QoS级别来订阅,后者只需要取消订阅的主题列表。
1
2
3
4
string
[] topic = {
"sensor/temp"
,
"sensor/humidity"
};
byte
[] qosLevels = { MqttMsgBase.QOS_LEVEL_AT_MOST_ONCE, MqttMsgBase.QOS_LEVEL_AT_MOST_ONCE };
client.Subscribe(topic, qosLevels);
订阅()方法返回订阅的消息id。
1
2
3
string
[] topic = {
"sensor/temp"
,
"sensor/humidity"
};
client.Unsubscribe(topics);
最后一个方法是出版()可以将消息发布到主题,指定主题本身和消息的数据字节。您还可以设置QoS级别参数(该参数具有默认值0)和REMENT标志,以便向发布消息时尚未连接的客户端传递消息。在这种情况下,代理保存消息,并在连接和订阅主题后立即将其发送给新客户端。
1
client.Publish(
"sensor/temp"
, Encoding.UTF8.GetBytes(temp)
M2Mqtt客户端库支持内部“inflight队列”异步执行所有发布请求(也可以订阅和取消订阅操作)。与上述特性相关的方法(出版(), 订阅()和取消订阅())返回分配给发送给代理的MQTT消息的消息id。执行异步操作时,会引发相应的事件,事件ARGS包含有关消息id的信息,以便用户能够匹配它。
使用MqttClient相关推荐
- java,mqtt-client开发创建客户端
使用Java 使用org.fusesource.mqtt-client 组件做Mqtt开发 大家可以在gitee或者Maven库网站上面找到对应的的Maven 引用 或者 Gradle 引用 GIte ...
- M2MQTT客户端MqttClient异常问题解决
最近做一个物联网设备模拟器,C#+net4.5,采用M2Mqtt.Net.dll开发库,从VS2017工具nuget安装.服务器采用EMQ 2.3.11稳定版. 计划是一个c#winform应用程序, ...
- TencentOS-tiny+ESP8266+mqttclient对接腾讯云平台IoThub
1. 硬件准备 本文中我准备的腾讯官方EVB_MX_Plus开发板和ESP8266 WIFI通信模组: 2. 云端产品创建 在云端创建产品的过程和下文相同,不再赘述. 小熊派移植TencentOS-t ...
- mqtt 发送消息过多_eclipse mqttclient 性能MQTT(32202): 正在发布过多的消息
mqttclient性能&MQTT(32202): 正在发布过多的消息 org.eclipse.paho.client.mqttv3 2.2 GHz Intel Core i7 mac系统 p ...
- 使用MQTTClient.h库进行mqtt通讯【C语言】
目录 MQTT 安装paho.mqtt.c库 安装依赖 安装 编译及运行 编译 运行 源代码 MQTT MQTT是一种轻量级物联网消息推送协议,使用MQTT开发物联网设备将会十分简单方便. 关于MQT ...
- C#使用MQTTnet的websocket加密方式(wss)实现MQTTClient
Mqttnet库的功能还是很强大的,可以直接在vs的NuGet里面下载,注意要下载最新版本,有些只有MQTT 的TCP连接方式,因为这个原因我走了很多弯路. 网上使用MQTTnet的库的很多都是TCP ...
- 编写MQTTClient测试程序,和PC端运行的MQTT服务程序进行数据收发
在实现了 MQTTClient 库与不同平台相关的代码之后,<实现ESP8266模块的socket接口,以提供MQTTClient库底层数据收发接口>这篇文章有介绍.就可以编写 MQTTC ...
- 关于android MqttClient消息推送客户端锁屏状态,无法发送心跳包解决方案
1.客户端锁屏状态,无法发送心跳包 解决方案:使用电源锁 客户端:MqttService /** * 设备电源锁. */ private PowerManager.WakeLock mWakeLock ...
- 一个高性能、高稳定性的跨平台MQTT客户端——mqttclient设计与实现方式
文章目录 mqttclient设计与实现方式 设计思想 API接口 MQTT客户端的核心结构 mqttclient实现 申请一个mqtt客户端 释放已申请的mqtt客户端 设置MQTT客户端的信息 连 ...
- mqttclient连接到OneNET云平台
文章目录 mqttclient连接到OneNET云平台 使用OneNET 测试连接 手动安装相关的依赖包 拉取mqttclient仓库 简单介绍mqttclient仓库文件夹 编译 运行 代码 使用到 ...
最新文章
- 2021年春季学期-信号与系统-第三次作业参考答案-第一道题
- cannot import name 'get_all_providers'
- android线程间通信的几种方法_Android 技能图谱学习路线
- cambridge mphil in management result
- C#:System.Data.Common命名空间(数据库抽象工厂的使用)
- Java中interrupted()和isInterrupted()之间的区别
- java if else重构_java – 如何重构这个有多个if / else语句的方法
- python memoryview_memoryview的用法
- ipv6正则表达式 java,用正则表达式解析IPv4跟IPv6地址字符串
- 计算机基础与python安装
- centos7,关闭mysql。出现mysql启动不了的情况
- SQL数据导入mongodb
- 普中51开发板,用XPT2046芯片实现AD数模转换。protues仿真用ADC0808实现AD数模转化
- 华为太极magisk安装教程_Magisk 需要修复运行环境,缺失Magisk正常工作所需的文件...
- QT中使用ActiveX
- OpenGLGLUT入门学习
- 一分钟明白 VS manifest 原理
- layui xm-select用法
- 【Python刷题*计算客】A+B+C问题
- 求a和b的最大公约数
热门文章
- win7 win8 64位系统上装CAD2008挂燕秀外挂的办法
- vue axios封装及使用
- 各自然带代表植被_十种常见自然带所对应的植被 十种常见自然带所对应的气候类型...
- 武汉大学计算机学院程序大赛,“星网锐捷杯”华中区高校研究生程序设计大赛通知...
- abb机器人编程指令写字_ABB机器人-编程基本指令之运动指令
- 将excel或是csv文件中的矩阵相乘,输出点乘后的excel文件
- Python实现音频文件格式转化
- matlab中uigetfile命令的应用
- 计算机三级权限管理方法,Serv―U 三级用户权限机制及配置一例
- 机器学习之欠采样和过采样