mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-20 11:45:43 +08:00
@@ -7,7 +7,6 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="1.1.2" />
|
||||
<PackageReference Include="MSTest.TestAdapter" Version="1.2.0" />
|
||||
<PackageReference Include="MSTest.TestFramework" Version="1.2.0" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" />
|
||||
@@ -15,7 +14,6 @@
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\Frameworks\MQTTnet.Netstandard\MQTTnet.NetStandard.csproj" />
|
||||
<ProjectReference Include="..\..\MQTTnet.Core\MQTTnet.Core.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -9,6 +9,7 @@ using MQTTnet.Core.Client;
|
||||
using MQTTnet.Core.Protocol;
|
||||
using MQTTnet.Core.Server;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using MQTTnet.Core.Internal;
|
||||
using MQTTnet.Core.Packets;
|
||||
|
||||
namespace MQTTnet.Core.Tests
|
||||
@@ -76,6 +77,8 @@ namespace MQTTnet.Core.Tests
|
||||
await c2.DisconnectAsync();
|
||||
|
||||
await Task.Delay(1000);
|
||||
|
||||
await c1.DisconnectAsync();
|
||||
}
|
||||
finally
|
||||
{
|
||||
@@ -214,7 +217,6 @@ namespace MQTTnet.Core.Tests
|
||||
.BuildServiceProvider();
|
||||
|
||||
var s = new MqttFactory(services).CreateMqttServer();
|
||||
var retainMessagemanager = services.GetRequiredService<IMqttClientRetainedMessageManager>();
|
||||
|
||||
var receivedMessagesCount = 0;
|
||||
try
|
||||
@@ -225,19 +227,7 @@ namespace MQTTnet.Core.Tests
|
||||
await c1.PublishAsync(new MqttApplicationMessageBuilder().WithTopic("retained").WithPayload(new byte[3]).WithRetainFlag().Build());
|
||||
await c1.DisconnectAsync();
|
||||
|
||||
var subscribe = new MqttSubscribePacket()
|
||||
{
|
||||
TopicFilters = new List<TopicFilter>()
|
||||
{
|
||||
new TopicFilter("retained", MqttQualityOfServiceLevel.AtMostOnce)
|
||||
}
|
||||
};
|
||||
|
||||
//make shure the retainedMessageManagerreceived the package
|
||||
while (!(await retainMessagemanager.GetSubscribedMessagesAsync(subscribe)).Any())
|
||||
{
|
||||
await Task.Delay(TimeSpan.FromMilliseconds(10));
|
||||
}
|
||||
await services.WaitForRetainedMessage("retained").TimeoutAfter(TimeSpan.FromSeconds(5));
|
||||
|
||||
var c2 = await serverAdapter.ConnectTestClient(s, "c2");
|
||||
c2.ApplicationMessageReceived += (_, __) => receivedMessagesCount++;
|
||||
@@ -316,6 +306,8 @@ namespace MQTTnet.Core.Tests
|
||||
await s.StopAsync();
|
||||
}
|
||||
|
||||
await services.WaitForRetainedMessage("retained").TimeoutAfter(TimeSpan.FromSeconds(5));
|
||||
|
||||
s = new MqttFactory(services).CreateMqttServer(options => options.Storage = storage);
|
||||
|
||||
var receivedMessagesCount = 0;
|
||||
@@ -438,4 +430,25 @@ namespace MQTTnet.Core.Tests
|
||||
Assert.AreEqual(expectedReceivedMessagesCount, receivedMessagesCount);
|
||||
}
|
||||
}
|
||||
|
||||
public static class TestExtensions
|
||||
{
|
||||
public static async Task WaitForRetainedMessage(this IServiceProvider services, string topic)
|
||||
{
|
||||
var retainMessagemanager = services.GetRequiredService<IMqttClientRetainedMessageManager>();
|
||||
|
||||
var subscribe = new MqttSubscribePacket()
|
||||
{
|
||||
TopicFilters = new List<TopicFilter>()
|
||||
{
|
||||
new TopicFilter(topic, MqttQualityOfServiceLevel.AtMostOnce)
|
||||
}
|
||||
};
|
||||
|
||||
while (!(await retainMessagemanager.GetSubscribedMessagesAsync(subscribe)).Any())
|
||||
{
|
||||
await Task.Delay(TimeSpan.FromMilliseconds(10));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,6 @@ using Microsoft.AspNetCore.Builder;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.FileProviders;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using MQTTnet.AspNetCore;
|
||||
using MQTTnet.Core;
|
||||
|
||||
@@ -21,21 +20,34 @@ namespace MQTTnet.TestApp.AspNetCore2
|
||||
}
|
||||
|
||||
// In class _Startup_ of the ASP.NET Core 2.0 project.
|
||||
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
|
||||
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
|
||||
{
|
||||
app.UseMqttEndpoint();
|
||||
app.UseMqttServer(async server =>
|
||||
app.UseMqttServer(server =>
|
||||
{
|
||||
var msg = new MqttApplicationMessageBuilder()
|
||||
.WithPayload("Mqtt is awesome")
|
||||
.WithTopic("message");
|
||||
|
||||
while (true)
|
||||
server.Started += async (sender, args) =>
|
||||
{
|
||||
server.PublishAsync(msg.Build()).Wait();
|
||||
await Task.Delay(TimeSpan.FromSeconds(2));
|
||||
msg.WithPayload("Mqtt is still awesome at " + DateTime.Now);
|
||||
}
|
||||
var msg = new MqttApplicationMessageBuilder()
|
||||
.WithPayload("Mqtt is awesome")
|
||||
.WithTopic("message");
|
||||
|
||||
while (true)
|
||||
{
|
||||
try
|
||||
{
|
||||
await server.PublishAsync(msg.Build());
|
||||
msg.WithPayload("Mqtt is still awesome at " + DateTime.Now);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine(e);
|
||||
}
|
||||
finally
|
||||
{
|
||||
await Task.Delay(TimeSpan.FromSeconds(2));
|
||||
}
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
app.Use((context, next) =>
|
||||
|
||||
@@ -7,13 +7,11 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="1.1.2" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="10.0.3" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\Frameworks\MQTTnet.Netstandard\MQTTnet.NetStandard.csproj" />
|
||||
<ProjectReference Include="..\..\MQTTnet.Core\MQTTnet.Core.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
Reference in New Issue
Block a user