diff --git a/Build/MQTTnet.nuspec b/Build/MQTTnet.nuspec index 519ebc25..8bdd4a17 100644 --- a/Build/MQTTnet.nuspec +++ b/Build/MQTTnet.nuspec @@ -18,10 +18,10 @@ - - - - + + + + @@ -47,9 +47,15 @@ - - - + + + + + + + + + @@ -71,6 +77,9 @@ + + + \ No newline at end of file diff --git a/Build/build.ps1 b/Build/build.ps1 index 3efa1577..1e47727c 100644 --- a/Build/build.ps1 +++ b/Build/build.ps1 @@ -9,6 +9,7 @@ if ($path) { $msbuild = join-path $path 'MSBuild\15.0\Bin\MSBuild.exe' &$msbuild ..\Frameworks\MQTTnet.Netstandard\MQTTnet.Netstandard.csproj /t:Build /p:Configuration="Release" /p:TargetFramework="net452" /p:FileVersion=$version /p:AssemblyVersion=$version /verbosity:m + &$msbuild ..\Frameworks\MQTTnet.Netstandard\MQTTnet.Netstandard.csproj /t:Build /p:Configuration="Release" /p:TargetFramework="net461" /p:FileVersion=$version /p:AssemblyVersion=$version /verbosity:m &$msbuild ..\Frameworks\MQTTnet.Netstandard\MQTTnet.Netstandard.csproj /t:Build /p:Configuration="Release" /p:TargetFramework="netstandard1.3" /p:FileVersion=$version /p:AssemblyVersion=$version /verbosity:m &$msbuild ..\Frameworks\MQTTnet.Netstandard\MQTTnet.Netstandard.csproj /t:Build /p:Configuration="Release" /p:TargetFramework="netstandard2.0" /p:FileVersion=$version /p:AssemblyVersion=$version /verbosity:m &$msbuild ..\Frameworks\MQTTnet.Netstandard\MQTTnet.Netstandard.csproj /t:Build /p:Configuration="Release" /p:TargetFramework="uap10.0" /p:FileVersion=$version /p:AssemblyVersion=$version /verbosity:m diff --git a/Frameworks/MQTTnet.AspnetCore/ApplicationBuilderExtensions.cs b/Frameworks/MQTTnet.AspnetCore/ApplicationBuilderExtensions.cs index 06ca74d4..831392da 100644 --- a/Frameworks/MQTTnet.AspnetCore/ApplicationBuilderExtensions.cs +++ b/Frameworks/MQTTnet.AspnetCore/ApplicationBuilderExtensions.cs @@ -2,6 +2,7 @@ using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.DependencyInjection; using MQTTnet.Core.Server; +using System.Linq; namespace MQTTnet.AspNetCore { @@ -14,8 +15,18 @@ namespace MQTTnet.AspNetCore { if (context.Request.Path == path && context.WebSockets.IsWebSocketRequest) { + string subprotocol = null; + + if (context.Request.Headers.TryGetValue("Sec-WebSocket-Protocol", out var requestedSubProtocolValues) + && requestedSubProtocolValues.Count > 0 + && requestedSubProtocolValues.Any(v => v.ToLower() == "mqtt") + ) + { + subprotocol = "mqtt"; + } + var adapter = app.ApplicationServices.GetRequiredService(); - using (var webSocket = await context.WebSockets.AcceptWebSocketAsync("mqtt")) + using (var webSocket = await context.WebSockets.AcceptWebSocketAsync(subprotocol)) { await adapter.AcceptWebSocketAsync(webSocket); } diff --git a/Frameworks/MQTTnet.NetStandard/Implementations/MqttServerAdapter.cs b/Frameworks/MQTTnet.NetStandard/Implementations/MqttServerAdapter.cs index a6e6251e..e3f048db 100644 --- a/Frameworks/MQTTnet.NetStandard/Implementations/MqttServerAdapter.cs +++ b/Frameworks/MQTTnet.NetStandard/Implementations/MqttServerAdapter.cs @@ -1,4 +1,4 @@ -#if NET452 || NETSTANDARD1_3 || NETSTANDARD2_0 +#if NET452 || NET461 || NETSTANDARD1_3 || NETSTANDARD2_0 using System; using System.Net; using System.Net.Security; @@ -98,7 +98,7 @@ namespace MQTTnet.Implementations try { //todo: else branch can be used with min dependency NET46 -#if NET452 +#if NET452 || NET461 var clientSocket = await Task.Factory.FromAsync(_defaultEndpointSocket.BeginAccept, _defaultEndpointSocket.EndAccept, null).ConfigureAwait(false); #else var clientSocket = await _defaultEndpointSocket.AcceptAsync().ConfigureAwait(false); @@ -122,7 +122,7 @@ namespace MQTTnet.Implementations { try { -#if NET452 +#if NET452 || NET461 var clientSocket = await Task.Factory.FromAsync(_tlsEndpointSocket.BeginAccept, _tlsEndpointSocket.EndAccept, null).ConfigureAwait(false); #else var clientSocket = await _tlsEndpointSocket.AcceptAsync().ConfigureAwait(false); diff --git a/Frameworks/MQTTnet.NetStandard/Implementations/MqttTcpChannel.cs b/Frameworks/MQTTnet.NetStandard/Implementations/MqttTcpChannel.cs index 2bf418bc..a7e40268 100644 --- a/Frameworks/MQTTnet.NetStandard/Implementations/MqttTcpChannel.cs +++ b/Frameworks/MQTTnet.NetStandard/Implementations/MqttTcpChannel.cs @@ -1,4 +1,4 @@ -#if NET452 || NETSTANDARD1_3 || NETSTANDARD2_0 +#if NET452 || NET461 || NETSTANDARD1_3 || NETSTANDARD2_0 using System; using System.Net.Security; using System.Net.Sockets; @@ -17,7 +17,7 @@ namespace MQTTnet.Implementations private readonly MqttClientTcpOptions _options; //todo: this can be used with min dependency NetStandard1.6 -#if NET452 +#if NET452 || NET461 // ReSharper disable once MemberCanBePrivate.Global // ReSharper disable once AutoPropertyCanBeMadeGetOnly.Global public static int BufferSize { get; set; } = 4096 * 20; // Can be changed for fine tuning by library user. @@ -59,7 +59,7 @@ namespace MQTTnet.Implementations } //todo: else brach can be used with min dependency NET46 -#if NET452 +#if NET452 || NET461 await Task.Factory.FromAsync(_socket.BeginConnect, _socket.EndConnect, _options.Server, _options.GetPort(), null).ConfigureAwait(false); #else await _socket.ConnectAsync(_options.Server, _options.GetPort()).ConfigureAwait(false); @@ -144,7 +144,7 @@ namespace MQTTnet.Implementations //need two streams otherwise read and write have to be synchronized //todo: if branch can be used with min dependency NetStandard1.6 -#if NET452 +#if NET452 || NET461 SendStream = new BufferedStream(stream, BufferSize); ReceiveStream = new BufferedStream(stream, BufferSize); #else diff --git a/Frameworks/MQTTnet.NetStandard/MQTTnet.Netstandard.csproj b/Frameworks/MQTTnet.NetStandard/MQTTnet.Netstandard.csproj index 266864d1..41c30d39 100644 --- a/Frameworks/MQTTnet.NetStandard/MQTTnet.Netstandard.csproj +++ b/Frameworks/MQTTnet.NetStandard/MQTTnet.Netstandard.csproj @@ -1,7 +1,7 @@  - netstandard1.3;netstandard2.0;net452;uap10.0 + netstandard1.3;netstandard2.0;net452;net461;uap10.0 MQTTnet MQTTnet 2.5.0.0 @@ -53,8 +53,8 @@ - - + + @@ -64,8 +64,14 @@ - - + + + + + + + + \ No newline at end of file diff --git a/Frameworks/MQTTnet.NetStandard/TargetFrameworkInfoProvider.cs b/Frameworks/MQTTnet.NetStandard/TargetFrameworkInfoProvider.cs new file mode 100644 index 00000000..22369d9c --- /dev/null +++ b/Frameworks/MQTTnet.NetStandard/TargetFrameworkInfoProvider.cs @@ -0,0 +1,23 @@ +namespace MQTTnet +{ + public static class TargetFrameworkInfoProvider + { + public static string TargetFramework + { + get + { +#if NET452 + return "net452"; +#elif NET461 + return "net461"; +#elif NETSTANDARD1_3 + return "netstandard1.3"; +#elif NETSTANDARD2_0 + return "netstandard2.0"; +#elif WINDOWS_UWP + return "uap10.0"; +#endif + } + } + } +} \ No newline at end of file diff --git a/MQTTnet.Core/MQTTnet.Core.csproj b/MQTTnet.Core/MQTTnet.Core.csproj index 71a518d5..522b3fb8 100644 --- a/MQTTnet.Core/MQTTnet.Core.csproj +++ b/MQTTnet.Core/MQTTnet.Core.csproj @@ -23,8 +23,8 @@ - - + + diff --git a/MQTTnet.sln b/MQTTnet.sln index 86fee978..326fe7ea 100644 --- a/MQTTnet.sln +++ b/MQTTnet.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 -VisualStudioVersion = 15.0.27004.2006 +VisualStudioVersion = 15.0.27004.2008 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MQTTnet.Core.Tests", "Tests\MQTTnet.Core.Tests\MQTTnet.Core.Tests.csproj", "{A7FF0C91-25DE-4BA6-B39E-F54E8DADF1CC}" EndProject diff --git a/Tests/MQTTnet.TestApp.NetCore/ClientTest.cs b/Tests/MQTTnet.TestApp.NetCore/ClientTest.cs index df3cd760..bc644e54 100644 --- a/Tests/MQTTnet.TestApp.NetCore/ClientTest.cs +++ b/Tests/MQTTnet.TestApp.NetCore/ClientTest.cs @@ -21,10 +21,10 @@ namespace MQTTnet.TestApp.NetCore { Server = "localhost" }, - ////ChannelOptions = new MqttClientWebSocketOptions - ////{ - //// Uri = "localhost" - ////} + //ChannelOptions = new MqttClientWebSocketOptions + //{ + // Uri = "ws://localhost:59690/mqtt" + //} }; var factory = new MqttFactory(); diff --git a/Tests/MQTTnet.TestApp.NetCore/MQTTnet.TestApp.NetCore.csproj b/Tests/MQTTnet.TestApp.NetCore/MQTTnet.TestApp.NetCore.csproj index 80d6a260..d89bdd31 100644 --- a/Tests/MQTTnet.TestApp.NetCore/MQTTnet.TestApp.NetCore.csproj +++ b/Tests/MQTTnet.TestApp.NetCore/MQTTnet.TestApp.NetCore.csproj @@ -3,7 +3,7 @@ Exe Full - netcoreapp2.0;net452 + netcoreapp2.0;net452;net461 diff --git a/Tests/MQTTnet.TestApp.NetCore/Program.cs b/Tests/MQTTnet.TestApp.NetCore/Program.cs index 42830870..d1c010fe 100644 --- a/Tests/MQTTnet.TestApp.NetCore/Program.cs +++ b/Tests/MQTTnet.TestApp.NetCore/Program.cs @@ -15,7 +15,7 @@ namespace MQTTnet.TestApp.NetCore { public static void Main() { - Console.WriteLine("MQTTnet - TestApp.NetFramework"); + Console.WriteLine($"MQTTnet - TestApp.{TargetFrameworkInfoProvider.TargetFramework}"); Console.WriteLine("1 = Start client"); Console.WriteLine("2 = Start server"); Console.WriteLine("3 = Start performance test");