|
|
@@ -108,10 +108,15 @@ namespace YSAI.Mqtt.client
|
|
|
|
|
|
protected override string ClassName => "MqttClientOperate";
|
|
|
|
|
|
- public async Task<OperateResult> PublishSubscribeAsync(string Topic, string Value, int QoSLevel = 0, bool Retain = false)
|
|
|
+ public Task<OperateResult> PublishSubscribeAsync(string Topic, string Value, int QoSLevel = 0, bool Retain = false)
|
|
|
+ {
|
|
|
+ return Task.Run(()=> PublishSubscribe(Topic, Value, QoSLevel, Retain));
|
|
|
+ }
|
|
|
+
|
|
|
+ public OperateResult PublishSubscribe(string Topic, string Value, int QoSLevel = 0, bool Retain = false)
|
|
|
{
|
|
|
//开始记录运行时间
|
|
|
- RunTimeTool.Instance($"{ClassName}.PublishSubscribe").StartRecord();
|
|
|
+ Depart("PublishSubscribe");
|
|
|
try
|
|
|
{
|
|
|
MqttApplicationMessage mqttApplicationMessage = new MqttApplicationMessage();
|
|
|
@@ -124,7 +129,7 @@ namespace YSAI.Mqtt.client
|
|
|
//消息是否保留
|
|
|
mqttApplicationMessage.Retain = Retain;
|
|
|
//发布(异步)等待执行完成
|
|
|
- MqttClientPublishResult mqttClientPublishResult = await mqttClient.PublishAsync(mqttApplicationMessage);
|
|
|
+ MqttClientPublishResult mqttClientPublishResult = mqttClient.PublishAsync(mqttApplicationMessage).Result;
|
|
|
if (mqttClientPublishResult.IsSuccess)
|
|
|
{
|
|
|
return Break("PublishSubscribe", true);
|
|
|
@@ -140,19 +145,19 @@ namespace YSAI.Mqtt.client
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public OperateResult PublishSubscribe(string Topic, string Value, int QoSLevel = 0, bool Retain = false)
|
|
|
+ public Task<OperateResult> AddSubscribeAsync(string Topic, int QoSLevel = 0)
|
|
|
{
|
|
|
- return PublishSubscribeAsync(Topic, Value, QoSLevel, Retain).Result;
|
|
|
+ return Task.Run(() => AddSubscribe(Topic, QoSLevel));
|
|
|
}
|
|
|
|
|
|
- public async Task<OperateResult> AddSubscribeAsync(string Topic, int QoSLevel = 0)
|
|
|
+ public OperateResult AddSubscribe(string Topic, int QoSLevel = 0)
|
|
|
{
|
|
|
//开始记录运行时间
|
|
|
- RunTimeTool.Instance($"{ClassName}.AddSubscribe").StartRecord();
|
|
|
+ Depart("AddSubscribe");
|
|
|
try
|
|
|
{
|
|
|
//添加订阅 (异步)等待执行完成
|
|
|
- await mqttClient.SubscribeAsync(Topic, (MqttQualityOfServiceLevel)QoSLevel);
|
|
|
+ mqttClient.SubscribeAsync(Topic, (MqttQualityOfServiceLevel)QoSLevel).Wait();
|
|
|
return Break("AddSubscribe", true);
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
@@ -161,19 +166,19 @@ namespace YSAI.Mqtt.client
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public OperateResult AddSubscribe(string Topic, int QoSLevel = 0)
|
|
|
+ public Task<OperateResult> RemoveSubscribeAsync(string Topic)
|
|
|
{
|
|
|
- return AddSubscribeAsync(Topic, QoSLevel).Result;
|
|
|
+ return Task.Run(()=> RemoveSubscribe(Topic));
|
|
|
}
|
|
|
|
|
|
- public async Task<OperateResult> RemoveSubscribeAsync(string Topic)
|
|
|
+ public OperateResult RemoveSubscribe(string Topic)
|
|
|
{
|
|
|
//开始记录运行时间
|
|
|
- RunTimeTool.Instance($"{ClassName}.RemoveSubscribe").StartRecord();
|
|
|
+ Depart("RemoveSubscribe");
|
|
|
try
|
|
|
{
|
|
|
//移除订阅 (异步)等待执行完成
|
|
|
- await mqttClient.UnsubscribeAsync(Topic);
|
|
|
+ mqttClient.UnsubscribeAsync(Topic).Wait();
|
|
|
return Break("RemoveSubscribe", true);
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
@@ -182,11 +187,6 @@ namespace YSAI.Mqtt.client
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public OperateResult RemoveSubscribe(string Topic)
|
|
|
- {
|
|
|
- return RemoveSubscribeAsync(Topic).Result;
|
|
|
- }
|
|
|
-
|
|
|
public Task<OperateResult> InitAsync()
|
|
|
{
|
|
|
return Task.Run(() => Init());
|
|
|
@@ -195,11 +195,11 @@ namespace YSAI.Mqtt.client
|
|
|
public OperateResult Init()
|
|
|
{
|
|
|
//开始记录运行时间
|
|
|
- RunTimeTool.Instance($"{ClassName}.Init").StartRecord();
|
|
|
+ Depart("Init");
|
|
|
try
|
|
|
{
|
|
|
//工厂模式获取连接客户端对象
|
|
|
- mqttClient = new MqttFactory().CreateMqttClient() as MqttClient;
|
|
|
+ mqttClient = new MqttFactory().CreateMqttClient() as MQTTnet.Client.MqttClient;
|
|
|
|
|
|
//客户端支持 Connected、Disconnected 和 ApplicationMessageReceived 事件,
|
|
|
//用来处理客户端与服务端连接、客户端从服务端断开以及客户端收到消息的事情。
|
|
|
@@ -218,10 +218,15 @@ namespace YSAI.Mqtt.client
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public async Task<OperateResult> OnAsync()
|
|
|
+ public Task<OperateResult> OnAsync()
|
|
|
+ {
|
|
|
+ return Task.Run(() => On());
|
|
|
+ }
|
|
|
+
|
|
|
+ public OperateResult On()
|
|
|
{
|
|
|
//开始记录运行时间
|
|
|
- RunTimeTool.Instance($"{ClassName}.On").StartRecord();
|
|
|
+ Depart("On");
|
|
|
try
|
|
|
{
|
|
|
MqttClientOptionsBuilder mqttClientOptionsBuilder = new MqttClientOptionsBuilder();
|
|
|
@@ -238,7 +243,7 @@ namespace YSAI.Mqtt.client
|
|
|
//存活时间
|
|
|
mqttClientOptionsBuilder.WithKeepAlivePeriod(TimeSpan.MaxValue);
|
|
|
//连接服务器(异步)
|
|
|
- await mqttClient.ConnectAsync(mqttClientOptionsBuilder.Build());
|
|
|
+ mqttClient.ConnectAsync(mqttClientOptionsBuilder.Build()).Wait();
|
|
|
//设置状态
|
|
|
states = States.On;
|
|
|
return Break("On", true);
|
|
|
@@ -250,19 +255,19 @@ namespace YSAI.Mqtt.client
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public OperateResult On()
|
|
|
+ public Task<OperateResult> OffAsync()
|
|
|
{
|
|
|
- return OnAsync().Result;
|
|
|
+ return Task.Run(() => Off());
|
|
|
}
|
|
|
|
|
|
- public async Task<OperateResult> OffAsync()
|
|
|
+ public OperateResult Off()
|
|
|
{
|
|
|
//开始记录运行时间
|
|
|
- RunTimeTool.Instance($"{ClassName}.Off").StartRecord();
|
|
|
+ Depart("Off");
|
|
|
try
|
|
|
{
|
|
|
//关闭与服务器的连接(异步)(等待执行完成)
|
|
|
- await mqttClient.DisconnectAsync();
|
|
|
+ mqttClient.DisconnectAsync().Wait();
|
|
|
//设置状态
|
|
|
states = States.Off;
|
|
|
return Break("Off", true);
|
|
|
@@ -272,10 +277,5 @@ namespace YSAI.Mqtt.client
|
|
|
return Break("Off", false, ex.Message);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- public OperateResult Off()
|
|
|
- {
|
|
|
- return OffAsync().Result;
|
|
|
- }
|
|
|
}
|
|
|
}
|