做的网站缩小内容就全乱了,wordpress中文docker,在线阅读 wordpress主题,现在从事网站开发如何net中MQTT的应用场景
c#常用来开发上位机程序#xff0c;或者其他一些跟设备打交道比较多的系统#xff0c;所以会经常作为拥有数据的终端#xff0c;可以用来采集上传数据#xff0c;而MQTT也是物联网常用的协议#xff0c;所以下面介绍在C#开发中使用MQTT。
安装MQTTn…net中MQTT的应用场景
c#常用来开发上位机程序或者其他一些跟设备打交道比较多的系统所以会经常作为拥有数据的终端可以用来采集上传数据而MQTT也是物联网常用的协议所以下面介绍在C#开发中使用MQTT。
安装MQTTnet
在c#开发中使用MQTTnet包在nuget管理器中搜索MQTTnet然后安装 MQTT使用
添加命名空间
using MQTTnet;
using MQTTnet.Client;
using MQTTnet.Protocol;创建一个MqttClient Console.WriteLine(Hello, World!);MqttClientOptionsBuilder optionsBuilder new MqttClientOptionsBuilder().WithTcpServer(127.0.0.1, 1883).WithClientId(testClient1);var clientOptions optionsBuilder.Build();IMqttClient _mqttClient new MqttFactory().CreateMqttClient();创建连接 _mqttClient.ConnectAsync(clientOptions);发送消息
先创建一个mqtt消息填入主题Topic,消息内容PayloadSegment然后使用PublishAsync方法发送 var message new MqttApplicationMessage{Topic testtopic/topic1,//主题PayloadSegment Encoding.Default.GetBytes(test Message),QualityOfServiceLevel MqttQualityOfServiceLevel.AtLeastOnce,Retain true // 服务端是否保留消息。true为保留如果有新的订阅者连接就会立马收到该消息。};_mqttClient.PublishAsync(message);在mqttx中订阅对应主题就能收到 订阅主题中#表示通配符说明该分类下testtpoic/的主题都会订阅。
订阅一个主题 _mqttClient.SubscribeAsync(topic1, MqttQualityOfServiceLevel.AtLeastOnce);
添加各种事件订阅
IMqttClient有下面这些事件可以使用
常用事件的添加
// 客户端连接成功事件
_mqttClient.ConnectedAsync MqttClient_ConnectedAsync;
// 客户端连接关闭事件
_mqttClient.DisconnectedAsync MqttClient_DisconnectedAsync;
// 收到消息事件
_mqttClient.ApplicationMessageReceivedAsync MqttClient_ApplicationMessageReceivedAsync;private static Task MqttClient_ConnectedAsync(MqttClientConnectedEventArgs arg)
{Console.WriteLine(客户端已断开与服务端的连接……);return Task.CompletedTask;
}private static Task MqttClient_DisconnectedAsync(MqttClientDisconnectedEventArgs arg)
{Console.WriteLine($客户端已断开与服务端的连接……);return Task.CompletedTask;
}private static Task MqttClient_ApplicationMessageReceivedAsync(MqttApplicationMessageReceivedEventArgs arg
)
{Console.WriteLine($ApplicationMessageReceivedAsync客户端ID【{arg.ClientId}】接收到消息。 Topic主题【{arg.ApplicationMessage.Topic}】 消息【{Encoding.UTF8.GetString(arg.ApplicationMessage.PayloadSegment)}】 qos等级【{arg.ApplicationMessage.QualityOfServiceLevel}】);return Task.CompletedTask;
}关注可获取更多资料源码和使用和说明文档↓↓