提交 d77d7848 编写于 作者: 麦壳饼's avatar 麦壳饼

当playload 为空时不再报错, 也不再发送空对象。

上级 ad7b63cf
...@@ -273,7 +273,7 @@ namespace IoTSharp.Extensions ...@@ -273,7 +273,7 @@ namespace IoTSharp.Extensions
} }
public static Dictionary<string, object> ConvertPayloadToDictionary(this MqttApplicationMessage msg) public static Dictionary<string, object> ConvertPayloadToDictionary(this MqttApplicationMessage msg)
{ {
return JToken.Parse(msg.ConvertPayloadToString())?.JsonToDictionary(); return JToken.Parse(msg.ConvertPayloadToString()??"{}")?.JsonToDictionary();
} }
public static Dictionary<string, object> JsonToDictionary(this JToken jojb) public static Dictionary<string, object> JsonToDictionary(this JToken jojb)
......
...@@ -120,7 +120,10 @@ namespace IoTSharp.Handlers ...@@ -120,7 +120,10 @@ namespace IoTSharp.Handlers
{ {
try try
{ {
keyValues = e.ApplicationMessage.ConvertPayloadToDictionary(); if (e.ApplicationMessage.Payload?.Length > 0)
{
keyValues = e.ApplicationMessage.ConvertPayloadToDictionary();
}
} }
catch (Exception ex) catch (Exception ex)
{ {
...@@ -129,17 +132,31 @@ namespace IoTSharp.Handlers ...@@ -129,17 +132,31 @@ namespace IoTSharp.Handlers
} }
if (tpary[2] == "telemetry") if (tpary[2] == "telemetry")
{ {
_queue.PublishTelemetryData(new PlayloadData() { DeviceId = device.Id, MsgBody = keyValues, DataSide = DataSide.ClientSide, DataCatalog = DataCatalog.TelemetryData }); if (keyValues.Count > 0)
{
_queue.PublishTelemetryData(new PlayloadData() { DeviceId = device.Id, MsgBody = keyValues, DataSide = DataSide.ClientSide, DataCatalog = DataCatalog.TelemetryData });
}
else
{
_logger.LogWarning( $"空的遥测数据 {topic}, ClientId:{e.ClientId}");
}
} }
else if (tpary[2] == "attributes") else if (tpary[2] == "attributes")
{ {
if (tpary.Length > 3 && tpary[3] == "request") if (keyValues.Count > 0)
{ {
await RequestAttributes(tpary, clientid, e.ApplicationMessage.ConvertPayloadToDictionary(), device); if (tpary.Length > 3 && tpary[3] == "request")
{
await RequestAttributes(tpary, clientid, e.ApplicationMessage.ConvertPayloadToDictionary(), device);
}
else
{
_queue.PublishAttributeData(new PlayloadData() { DeviceId = device.Id, MsgBody = keyValues, DataSide = DataSide.ClientSide, DataCatalog = DataCatalog.AttributeData });
}
} }
else else
{ {
_queue.PublishAttributeData(new PlayloadData() { DeviceId = device.Id, MsgBody = keyValues, DataSide = DataSide.ClientSide, DataCatalog = DataCatalog.AttributeData }); _logger.LogWarning($"空的属性数据 {topic}, ClientId:{e.ClientId}");
} }
} }
else if (tpary[2] == "status" ) else if (tpary[2] == "status" )
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册