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

mqtt update to 3.0.2

上级 e4f6e523
......@@ -9,7 +9,7 @@
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="2.2.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.0.1" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.1.0" />
<PackageReference Include="MSTest.TestAdapter" Version="1.4.0" />
<PackageReference Include="MSTest.TestFramework" Version="1.4.0" />
</ItemGroup>
......
using MQTTnet;
using MQTTnet.Client;
using MQTTnet.Client.Options;
using MQTTnet.Client.Receiving;
using MQTTnet.Exceptions;
using MQTTnet.Protocol;
using System;
......@@ -25,7 +27,7 @@ namespace IoTSharp.Extensions
{
_mqttClient = mqttClient ?? throw new ArgumentNullException(nameof(mqttClient));
_mqttClient.ApplicationMessageReceived += OnApplicationMessageReceived;
_mqttClient.ApplicationMessageReceivedHandler = new MqttApplicationMessageReceivedHandlerDelegate(args => OnApplicationMessageReceived(mqttClient, args) );
}
public RpcClient(IMqttClientOptions mqtt):this (new MQTTnet.MqttFactory().CreateMqttClient())
......
......@@ -15,6 +15,7 @@ using MQTTnet.Extensions.Rpc;
using MQTTnet.Protocol;
using IoTSharp.Extensions;
using MQTTnet.Exceptions;
using MQTTnet.Client.Options;
namespace IoTSharp.Controllers
{
......
......@@ -11,6 +11,9 @@ using MQTTnet.Diagnostics;
using MQTTnet.AspNetCoreEx;
using IoTSharp.Handlers;
using IoTSharp.Services;
using MQTTnet.Server;
using MQTTnet.Client.Receiving;
using MQTTnet.Client.Options;
namespace IoTSharp
{
......@@ -50,13 +53,14 @@ namespace IoTSharp
var mqttEvents = app.ApplicationServices.CreateScope().ServiceProvider.GetService<MqttEventsHandler>();
app.UseMqttServerEx(server =>
{
server.ClientConnected += mqttEvents.Server_ClientConnected;
server.Started += mqttEvents.Server_Started;
server.Stopped += mqttEvents.Server_Stopped;
server.ApplicationMessageReceived += mqttEvents.Server_ApplicationMessageReceived;
server.ClientSubscribedTopic += mqttEvents.Server_ClientSubscribedTopic;
server.ClientUnsubscribedTopic += mqttEvents.Server_ClientUnsubscribedTopic;
server.ClientConnectionValidator += mqttEvents.Server_ClientConnectionValidator;
server.ClientConnectedHandler = new MqttServerClientConnectedHandlerDelegate(args => mqttEvents.Server_ClientConnected(server, args));
server.StartedHandler = new MqttServerStartedHandlerDelegate(args => mqttEvents.Server_Started(server, args));
server.StoppedHandler = new MqttServerStoppedHandlerDelegate(args => mqttEvents.Server_Stopped(server, args));
server.ApplicationMessageReceivedHandler = new MqttApplicationMessageReceivedHandlerDelegate(args => mqttEvents.Server_ApplicationMessageReceived(server, args));
server.ClientSubscribedTopicHandler = new MqttServerClientSubscribedHandlerDelegate(args => mqttEvents.Server_ClientSubscribedTopic(server, args));
server.ClientUnsubscribedTopicHandler = new MqttServerClientUnsubscribedTopicHandlerDelegate(args => mqttEvents.Server_ClientUnsubscribedTopic(server, args));
server.ClientConnectionValidatorHandler = new MqttServerClientConnectionValidatorHandlerDelegate(args => mqttEvents.Server_ClientConnectionValidator(server, args));
});
var mqttNetLogger = app.ApplicationServices.GetService<IMqttNetLogger>();
......
......@@ -28,7 +28,7 @@ namespace IoTSharp.Handlers
}
static long clients = 0;
internal void Server_ClientConnected(object sender, MqttClientConnectedEventArgs e)
internal void Server_ClientConnected(object sender, MqttServerClientConnectedEventArgs e)
{
_logger.LogInformation($"Client [{e.ClientId}] connected");
clients++;
......@@ -63,7 +63,7 @@ namespace IoTSharp.Handlers
received += e.ApplicationMessage.Payload.Length;
}
long Subscribed;
internal void Server_ClientSubscribedTopic(object sender, MqttClientSubscribedTopicEventArgs e)
internal void Server_ClientSubscribedTopic(object sender, MqttServerClientSubscribedTopicEventArgs e)
{
_logger.LogInformation($"Client [{e.ClientId}] subscribed [{e.TopicFilter}]");
if (e.TopicFilter.Topic.StartsWith("$SYS/"))
......@@ -71,7 +71,7 @@ namespace IoTSharp.Handlers
if (e.TopicFilter.Topic.StartsWith("$SYS/broker/version"))
{
var mename = typeof(MqttEventsHandler).Assembly.GetName();
var mqttnet = typeof(MqttClientSubscribedTopicEventArgs).Assembly.GetName();
var mqttnet = typeof(MqttServerClientSubscribedTopicEventArgs).Assembly.GetName();
Task.Run(() => _serverEx.PublishAsync("$SYS/broker/version", $"{mename.Name}V{mename.Version.ToString()},{mqttnet.Name}.{mqttnet.Version.ToString()}"));
}
else if (e.TopicFilter.Topic.StartsWith("$SYS/broker/uptime"))
......@@ -96,7 +96,7 @@ namespace IoTSharp.Handlers
}
internal void Server_ClientUnsubscribedTopic(object sender, MqttClientUnsubscribedTopicEventArgs e)
internal void Server_ClientUnsubscribedTopic(object sender, MqttServerClientUnsubscribedTopicEventArgs e)
{
_logger.LogInformation($"Client [{e.ClientId}] unsubscribed[{e.TopicFilter}]");
if (!e.TopicFilter.StartsWith("$SYS/"))
......@@ -107,7 +107,7 @@ namespace IoTSharp.Handlers
}
internal static Dictionary<string, Device> Devices = new Dictionary<string, Device>();
public static string MD5Sum(string text) => BitConverter.ToString(MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(text))).Replace("-", "");
internal void Server_ClientConnectionValidator(object sender, MqttClientConnectionValidatorEventArgs e)
internal void Server_ClientConnectionValidator(object sender, MqttServerClientConnectionValidatorEventArgs e)
{
MqttConnectionValidatorContext obj = e.Context;
Uri uri = new Uri("mqtt://" + obj.Endpoint);
......
......@@ -45,7 +45,7 @@
<RpmDependency Include="libicu" Version="50.1.2" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Packaging.Targets" Version="0.1.70" />
<PackageReference Include="Packaging.Targets" Version="0.1.78" />
<DotNetCliToolReference Include="dotnet-tarball" Version="0.1.70" />
<DotNetCliToolReference Include="dotnet-zip" Version="0.1.70" />
<DotNetCliToolReference Include="dotnet-rpm" Version="0.1.70" />
......@@ -68,18 +68,18 @@
<PackageReference Include="Microsoft.AspNetCore.Identity" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.2.3" />
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="2.2.3" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="2.2.3" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="2.2.3" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.2.4" />
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="2.2.4" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="2.2.4" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="2.2.4" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite.Design" Version="1.1.6" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.2.3" />
<PackageReference Include="MQTTnet" Version="2.8.5" />
<PackageReference Include="MQTTnet.AspNetCore" Version="2.8.5" />
<PackageReference Include="MQTTnet.AspNetCoreEx" Version="1.0.0" />
<PackageReference Include="MQTTnet.Extensions.Rpc" Version="2.8.5" />
<PackageReference Include="MQTTnet" Version="3.0.2" />
<PackageReference Include="MQTTnet.AspNetCore" Version="3.0.2" />
<PackageReference Include="MQTTnet.AspNetCoreEx" Version="3.0.2" />
<PackageReference Include="MQTTnet.Extensions.Rpc" Version="3.0.2" />
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="2.2.0" />
<PackageReference Include="NSwag.AspNetCore" Version="12.0.20" />
<PackageReference Include="NSwag.AspNetCore" Version="12.2.5" />
<PackageReference Include="QuartzHostedService" Version="0.0.4" />
<PackageReference Include="System.Text.Encoding.CodePages" Version="4.5.1" />
</ItemGroup>
......
......@@ -8,6 +8,11 @@ using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using MQTTnet;
using MQTTnet.Client;
using MQTTnet.Client.Connecting;
using MQTTnet.Client.Disconnecting;
using MQTTnet.Client.Options;
using MQTTnet.Client.Receiving;
using MQTTnet.Server;
using System;
using System.Collections.Generic;
using System.Linq;
......@@ -28,9 +33,9 @@ namespace IoTSharp.Services
_logger = logger;
_mqtt = mqtt;
_clientOptions = clientOptions;
mqtt.ApplicationMessageReceived += Mqtt_ApplicationMessageReceived;
mqtt.Connected += Mqtt_Connected;
mqtt.Disconnected += Mqtt_DisconnectedAsync;
mqtt.ApplicationMessageReceivedHandler = new MqttApplicationMessageReceivedHandlerDelegate(args => Mqtt_ApplicationMessageReceived(mqtt, args));
mqtt.ConnectedHandler =new MqttClientConnectedHandlerDelegate (args=> Mqtt_ConnectedAsync(mqtt,args));
mqtt.DisconnectedHandler =new MqttClientDisconnectedHandlerDelegate (args=> Mqtt_DisconnectedAsync(mqtt,args));
_serviceScope = scopeFactor.CreateScope();
_dbContext = _serviceScope.ServiceProvider.GetRequiredService<ApplicationDbContext>();
}
......@@ -49,9 +54,11 @@ namespace IoTSharp.Services
}
}
private void Mqtt_Connected(object sender, MqttClientConnectedEventArgs e)
private async void Mqtt_ConnectedAsync(object sender, MqttClientConnectedEventArgs e)
{
_logger.LogInformation($"CONNECTED IsSessionPresent: {e.IsSessionPresent}");
_logger.LogInformation($"CONNECTED IsSessionPresent: {e.AuthenticateResult.IsSessionPresent } ResultCode: { e.AuthenticateResult.ResultCode}");
var subresult1=await _mqtt.SubscribeAsync("/devices/telemetry/#");
var subresult2= await _mqtt.SubscribeAsync("/devices/attributes/#");
}
Dictionary<string, Device> Devices => MqttEventsHandler.Devices;
......@@ -120,7 +127,7 @@ namespace IoTSharp.Services
public Task StopAsync(CancellationToken cancellationToken)
{
_mqtt.Disconnected -= Mqtt_DisconnectedAsync;
_mqtt.DisconnectedHandler = null;
return _mqtt.DisconnectAsync();
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册