mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-11-02 12:12:38 +08:00
Add extension method for subscriptions
This commit is contained in:
@@ -0,0 +1,47 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<package >
|
||||||
|
<metadata>
|
||||||
|
<id>MQTTnet.Extensions.Rpc</id>
|
||||||
|
<version>2.6.0</version>
|
||||||
|
<authors>Christian Kratky</authors>
|
||||||
|
<owners>Christian Kratky</owners>
|
||||||
|
<licenseUrl>https://github.com/chkr1011/MQTTnet/blob/master/LICENSE</licenseUrl>
|
||||||
|
<projectUrl>https://github.com/chkr1011/MQTTnet</projectUrl>
|
||||||
|
<iconUrl>https://raw.githubusercontent.com/chkr1011/MQTTnet/master/Images/Logo_128x128.png</iconUrl>
|
||||||
|
<requireLicenseAcceptance>false</requireLicenseAcceptance>
|
||||||
|
<description>This is a extension library which allows executing synchronous device calls including a response using MQTTnet.</description>
|
||||||
|
<releaseNotes>* Initial version.
|
||||||
|
</releaseNotes>
|
||||||
|
<copyright>Copyright Christian Kratky 2016-2017</copyright>
|
||||||
|
<tags>MQTT Message Queue Telemetry Transport MQTTClient MQTTServer Server MQTTBroker Broker NETStandard IoT InternetOfThings Messaging Hardware Arduino Sensor Actuator M2M ESP Smart Home Cities Automation Xamarin</tags>
|
||||||
|
<dependencies>
|
||||||
|
<group targetFramework="netstandard2.0">
|
||||||
|
<dependency id="MQTTnet" version="2.6.0-rc1" />
|
||||||
|
</group>
|
||||||
|
<group targetFramework="netstandard1.3">
|
||||||
|
<dependency id="MQTTnet" version="2.6.0-rc1" />
|
||||||
|
</group>
|
||||||
|
|
||||||
|
<group targetFramework="netstandard2.0">
|
||||||
|
<dependency id="MQTTnet" version="2.6.0-rc1" />
|
||||||
|
</group>
|
||||||
|
|
||||||
|
<group targetFramework="uap10.0">
|
||||||
|
<dependency id="MQTTnet" version="2.6.0-rc1" />
|
||||||
|
</group>
|
||||||
|
|
||||||
|
<group targetFramework="net452">
|
||||||
|
<dependency id="MQTTnet" version="2.6.0-rc1" />
|
||||||
|
</group>
|
||||||
|
|
||||||
|
<group targetFramework="net461">
|
||||||
|
<dependency id="MQTTnet" version="2.6.0-rc1" />
|
||||||
|
</group>
|
||||||
|
</dependencies>
|
||||||
|
</metadata>
|
||||||
|
|
||||||
|
<files>
|
||||||
|
<!-- .NET Standard 2.0 -->
|
||||||
|
<file src="..\Frameworks\MQTTnet.AspNetCore\bin\Release\netstandard2.0\MQTTnet.AspNetCore.*" target="lib\netstandard2.0\"/>
|
||||||
|
</files>
|
||||||
|
</package>
|
||||||
@@ -8,16 +8,26 @@ $path = &$vswhere -latest -products * -requires Microsoft.Component.MSBuild -pro
|
|||||||
if ($path) {
|
if ($path) {
|
||||||
$msbuild = join-path $path 'MSBuild\15.0\Bin\MSBuild.exe'
|
$msbuild = join-path $path 'MSBuild\15.0\Bin\MSBuild.exe'
|
||||||
|
|
||||||
|
# Build the core library
|
||||||
&$msbuild ..\Frameworks\MQTTnet.Netstandard\MQTTnet.Netstandard.csproj /t:Build /p:Configuration="Release" /p:TargetFramework="net452" /p:FileVersion=$assemblyVersion /p:AssemblyVersion=$assemblyVersion /verbosity:m
|
&$msbuild ..\Frameworks\MQTTnet.Netstandard\MQTTnet.Netstandard.csproj /t:Build /p:Configuration="Release" /p:TargetFramework="net452" /p:FileVersion=$assemblyVersion /p:AssemblyVersion=$assemblyVersion /verbosity:m
|
||||||
&$msbuild ..\Frameworks\MQTTnet.Netstandard\MQTTnet.Netstandard.csproj /t:Build /p:Configuration="Release" /p:TargetFramework="net461" /p:FileVersion=$assemblyVersion /p:AssemblyVersion=$assemblyVersion /verbosity:m
|
&$msbuild ..\Frameworks\MQTTnet.Netstandard\MQTTnet.Netstandard.csproj /t:Build /p:Configuration="Release" /p:TargetFramework="net461" /p:FileVersion=$assemblyVersion /p:AssemblyVersion=$assemblyVersion /verbosity:m
|
||||||
&$msbuild ..\Frameworks\MQTTnet.Netstandard\MQTTnet.Netstandard.csproj /t:Build /p:Configuration="Release" /p:TargetFramework="netstandard1.3" /p:FileVersion=$assemblyVersion /p:AssemblyVersion=$assemblyVersion /verbosity:m
|
&$msbuild ..\Frameworks\MQTTnet.Netstandard\MQTTnet.Netstandard.csproj /t:Build /p:Configuration="Release" /p:TargetFramework="netstandard1.3" /p:FileVersion=$assemblyVersion /p:AssemblyVersion=$assemblyVersion /verbosity:m
|
||||||
&$msbuild ..\Frameworks\MQTTnet.Netstandard\MQTTnet.Netstandard.csproj /t:Build /p:Configuration="Release" /p:TargetFramework="netstandard2.0" /p:FileVersion=$assemblyVersion /p:AssemblyVersion=$assemblyVersion /verbosity:m
|
&$msbuild ..\Frameworks\MQTTnet.Netstandard\MQTTnet.Netstandard.csproj /t:Build /p:Configuration="Release" /p:TargetFramework="netstandard2.0" /p:FileVersion=$assemblyVersion /p:AssemblyVersion=$assemblyVersion /verbosity:m
|
||||||
&$msbuild ..\Frameworks\MQTTnet.Netstandard\MQTTnet.Netstandard.csproj /t:Build /p:Configuration="Release" /p:TargetFramework="uap10.0" /p:FileVersion=$assemblyVersion /p:AssemblyVersion=$assemblyVersion /verbosity:m
|
&$msbuild ..\Frameworks\MQTTnet.Netstandard\MQTTnet.Netstandard.csproj /t:Build /p:Configuration="Release" /p:TargetFramework="uap10.0" /p:FileVersion=$assemblyVersion /p:AssemblyVersion=$assemblyVersion /verbosity:m
|
||||||
|
|
||||||
|
# Build the ASP.NET Core 2.0 extension
|
||||||
&$msbuild ..\Frameworks\MQTTnet.AspNetCore\MQTTnet.AspNetCore.csproj /t:Build /p:Configuration="Release" /p:TargetFramework="netstandard2.0" /p:FileVersion=$assemblyVersion /p:AssemblyVersion=$assemblyVersion /verbosity:m
|
&$msbuild ..\Frameworks\MQTTnet.AspNetCore\MQTTnet.AspNetCore.csproj /t:Build /p:Configuration="Release" /p:TargetFramework="netstandard2.0" /p:FileVersion=$assemblyVersion /p:AssemblyVersion=$assemblyVersion /verbosity:m
|
||||||
|
|
||||||
|
# Build the RPC extension
|
||||||
|
&$msbuild ..\Extensions\MQTTnet.Extensions.Rpc\MQTTnet.Extensions.Rpc.csproj /t:Build /p:Configuration="Release" /p:TargetFramework="net452" /p:FileVersion=$assemblyVersion /p:AssemblyVersion=$assemblyVersion /verbosity:m
|
||||||
|
&$msbuild ..\Extensions\MQTTnet.Extensions.Rpc\MQTTnet.Extensions.Rpc.csproj /t:Build /p:Configuration="Release" /p:TargetFramework="net461" /p:FileVersion=$assemblyVersion /p:AssemblyVersion=$assemblyVersion /verbosity:m
|
||||||
|
&$msbuild ..\Extensions\MQTTnet.Extensions.Rpc\MQTTnet.Extensions.Rpc.csproj /t:Build /p:Configuration="Release" /p:TargetFramework="netstandard1.3" /p:FileVersion=$assemblyVersion /p:AssemblyVersion=$assemblyVersion /verbosity:m
|
||||||
|
&$msbuild ..\Extensions\MQTTnet.Extensions.Rpc\MQTTnet.Extensions.Rpc.csproj /t:Build /p:Configuration="Release" /p:TargetFramework="netstandard2.0" /p:FileVersion=$assemblyVersion /p:AssemblyVersion=$assemblyVersion /verbosity:m
|
||||||
|
&$msbuild ..\Extensions\MQTTnet.Extensions.Rpc\MQTTnet.Extensions.Rpc.csproj /t:Build /p:Configuration="Release" /p:TargetFramework="uap10.0" /p:FileVersion=$assemblyVersion /p:AssemblyVersion=$assemblyVersion /verbosity:m
|
||||||
|
|
||||||
Remove-Item .\NuGet -Force -Recurse
|
Remove-Item .\NuGet -Force -Recurse
|
||||||
New-Item -ItemType Directory -Force -Path .\NuGet
|
New-Item -ItemType Directory -Force -Path .\NuGet
|
||||||
.\NuGet.exe pack MQTTnet.nuspec -Verbosity detailed -Symbols -OutputDir "NuGet" -Version $nugetVersion
|
.\NuGet.exe pack MQTTnet.nuspec -Verbosity detailed -Symbols -OutputDir "NuGet" -Version $nugetVersion
|
||||||
.\NuGet.exe pack MQTTnet.AspNetCore.nuspec -Verbosity detailed -Symbols -OutputDir "NuGet" -Version $nugetVersion
|
.\NuGet.exe pack MQTTnet.AspNetCore.nuspec -Verbosity detailed -Symbols -OutputDir "NuGet" -Version $nugetVersion
|
||||||
|
.\NuGet.exe pack MQTTnet.Extensions.Rpc.nuspec -Verbosity detailed -Symbols -OutputDir "NuGet" -Version $nugetVersion
|
||||||
}
|
}
|
||||||
@@ -9,7 +9,7 @@ namespace MQTTnet.Extensions.Rpc
|
|||||||
{
|
{
|
||||||
public sealed class MqttRpcClient : IDisposable
|
public sealed class MqttRpcClient : IDisposable
|
||||||
{
|
{
|
||||||
private const string ResponseTopic = "$RPC/+/+/response";
|
private const string ResponseTopic = "$MQTTnet.RPC/+/+/response";
|
||||||
private readonly ConcurrentDictionary<string, TaskCompletionSource<byte[]>> _waitingCalls = new ConcurrentDictionary<string, TaskCompletionSource<byte[]>>();
|
private readonly ConcurrentDictionary<string, TaskCompletionSource<byte[]>> _waitingCalls = new ConcurrentDictionary<string, TaskCompletionSource<byte[]>>();
|
||||||
private readonly IMqttClient _mqttClient;
|
private readonly IMqttClient _mqttClient;
|
||||||
private bool _isEnabled;
|
private bool _isEnabled;
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using MQTTnet.Protocol;
|
||||||
|
|
||||||
namespace MQTTnet.Client
|
namespace MQTTnet.Client
|
||||||
{
|
{
|
||||||
@@ -15,6 +16,14 @@ namespace MQTTnet.Client
|
|||||||
return client.SubscribeAsync(topicFilters.ToList());
|
return client.SubscribeAsync(topicFilters.ToList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Task<IList<MqttSubscribeResult>> SubscribeAsync(this IMqttClient client, string topic, MqttQualityOfServiceLevel qualityOfServiceLevel)
|
||||||
|
{
|
||||||
|
if (client == null) throw new ArgumentNullException(nameof(client));
|
||||||
|
if (topic == null) throw new ArgumentNullException(nameof(topic));
|
||||||
|
|
||||||
|
return client.SubscribeAsync(new TopicFilterBuilder().WithTopic(topic).WithQualityOfServiceLevel(qualityOfServiceLevel).Build());
|
||||||
|
}
|
||||||
|
|
||||||
public static Task UnsubscribeAsync(this IMqttClient client, params string[] topicFilters)
|
public static Task UnsubscribeAsync(this IMqttClient client, params string[] topicFilters)
|
||||||
{
|
{
|
||||||
if (client == null) throw new ArgumentNullException(nameof(client));
|
if (client == null) throw new ArgumentNullException(nameof(client));
|
||||||
|
|||||||
@@ -19,6 +19,8 @@
|
|||||||
<StackPanel Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
|
<StackPanel Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
|
||||||
<TextBlock>Server:</TextBlock>
|
<TextBlock>Server:</TextBlock>
|
||||||
<TextBox x:Name="Server"></TextBox>
|
<TextBox x:Name="Server"></TextBox>
|
||||||
|
<TextBlock>Port:</TextBlock>
|
||||||
|
<TextBox x:Name="Port" Text="1883"></TextBox>
|
||||||
<TextBlock>User:</TextBlock>
|
<TextBlock>User:</TextBlock>
|
||||||
<TextBox x:Name="User"></TextBox>
|
<TextBox x:Name="User"></TextBox>
|
||||||
<TextBlock>Password:</TextBlock>
|
<TextBlock>Password:</TextBlock>
|
||||||
|
|||||||
@@ -78,6 +78,7 @@ namespace MQTTnet.TestApp.UniversalWindows
|
|||||||
options.ChannelOptions = new MqttClientTcpOptions
|
options.ChannelOptions = new MqttClientTcpOptions
|
||||||
{
|
{
|
||||||
Server = Server.Text,
|
Server = Server.Text,
|
||||||
|
Port = int.Parse(Port.Text),
|
||||||
TlsOptions = tlsOptions
|
TlsOptions = tlsOptions
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user