mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-18 18:43:10 +08:00
Add extension library for WebSocket4Net usage.
This commit is contained in:
@@ -135,6 +135,10 @@
|
||||
<Project>{c444e9c8-95fa-430e-9126-274129de16cd}</Project>
|
||||
<Name>MQTTnet.Extensions.Rpc</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\Source\MQTTnet.Extensions.WebSocket4Net\MQTTnet.Extensions.WebSocket4Net.csproj">
|
||||
<Project>{2BD01D53-4CA5-4142-BE8D-313876395E3E}</Project>
|
||||
<Name>MQTTnet.Extensions.WebSocket4Net</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\Source\MQTTnet\MQTTnet.csproj">
|
||||
<Project>{3587e506-55a2-4eb3-99c7-dc01e42d25d2}</Project>
|
||||
<Name>MQTTnet</Name>
|
||||
|
||||
@@ -63,6 +63,7 @@
|
||||
<StackPanel Grid.Column="1" Grid.Row="6" Orientation="Horizontal">
|
||||
<RadioButton x:Name="UseTcp" IsChecked="True" GroupName="transport">TCP</RadioButton>
|
||||
<RadioButton x:Name="UseWs" GroupName="transport">WS</RadioButton>
|
||||
<RadioButton x:Name="UseWs4Net" GroupName="transport">WS (WebSocket4Net)</RadioButton>
|
||||
<CheckBox x:Name="UseTls">Use TLS</CheckBox>
|
||||
</StackPanel>
|
||||
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Net.Security;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Windows.Security.Cryptography.Certificates;
|
||||
@@ -23,6 +21,7 @@ using MQTTnet.Server;
|
||||
using MQTTnet.Server.Status;
|
||||
using MqttClientConnectedEventArgs = MQTTnet.Client.Connecting.MqttClientConnectedEventArgs;
|
||||
using MqttClientDisconnectedEventArgs = MQTTnet.Client.Disconnecting.MqttClientDisconnectedEventArgs;
|
||||
using MQTTnet.Extensions.WebSocket4Net;
|
||||
|
||||
namespace MQTTnet.TestApp.UniversalWindows
|
||||
{
|
||||
@@ -83,6 +82,8 @@ namespace MQTTnet.TestApp.UniversalWindows
|
||||
|
||||
private async void Connect(object sender, RoutedEventArgs e)
|
||||
{
|
||||
var mqttFactory = new MqttFactory();
|
||||
|
||||
var tlsOptions = new MqttClientTlsOptions
|
||||
{
|
||||
UseTls = UseTls.IsChecked == true,
|
||||
@@ -116,6 +117,17 @@ namespace MQTTnet.TestApp.UniversalWindows
|
||||
};
|
||||
}
|
||||
|
||||
if (UseWs4Net.IsChecked == true)
|
||||
{
|
||||
options.ChannelOptions = new MqttClientWebSocketOptions
|
||||
{
|
||||
Uri = Server.Text,
|
||||
TlsOptions = tlsOptions
|
||||
};
|
||||
|
||||
mqttFactory.UseWebSocket4Net();
|
||||
}
|
||||
|
||||
if (options.ChannelOptions == null)
|
||||
{
|
||||
throw new InvalidOperationException();
|
||||
@@ -156,11 +168,9 @@ namespace MQTTnet.TestApp.UniversalWindows
|
||||
_mqttClient.DisconnectedHandler = new MqttClientDisconnectedHandlerDelegate(x => OnDisconnected(x));
|
||||
}
|
||||
|
||||
var factory = new MqttFactory();
|
||||
|
||||
if (UseManagedClient.IsChecked == true)
|
||||
{
|
||||
_managedMqttClient = factory.CreateManagedMqttClient();
|
||||
_managedMqttClient = mqttFactory.CreateManagedMqttClient();
|
||||
_managedMqttClient.UseApplicationMessageReceivedHandler(HandleReceivedApplicationMessage);
|
||||
_managedMqttClient.ConnectedHandler = new MqttClientConnectedHandlerDelegate(x => OnConnected(x));
|
||||
_managedMqttClient.DisconnectedHandler = new MqttClientDisconnectedHandlerDelegate(x => OnDisconnected(x));
|
||||
@@ -172,7 +182,7 @@ namespace MQTTnet.TestApp.UniversalWindows
|
||||
}
|
||||
else
|
||||
{
|
||||
_mqttClient = factory.CreateMqttClient();
|
||||
_mqttClient = mqttFactory.CreateMqttClient();
|
||||
_mqttClient.UseApplicationMessageReceivedHandler(HandleReceivedApplicationMessage);
|
||||
_mqttClient.ConnectedHandler = new MqttClientConnectedHandlerDelegate(x => OnConnected(x));
|
||||
_mqttClient.DisconnectedHandler = new MqttClientDisconnectedHandlerDelegate(x => OnDisconnected(x));
|
||||
@@ -204,7 +214,7 @@ namespace MQTTnet.TestApp.UniversalWindows
|
||||
|
||||
private async Task HandleReceivedApplicationMessage(MqttApplicationMessageReceivedEventArgs eventArgs)
|
||||
{
|
||||
var item = $"Timestamp: {DateTime.Now:O} | Topic: {eventArgs.ApplicationMessage.Topic} | Payload: {Encoding.UTF8.GetString(eventArgs.ApplicationMessage.Payload)} | QoS: {eventArgs.ApplicationMessage.QualityOfServiceLevel}";
|
||||
var item = $"Timestamp: {DateTime.Now:O} | Topic: {eventArgs.ApplicationMessage.Topic} | Payload: {eventArgs.ApplicationMessage.ConvertPayloadToString()} | QoS: {eventArgs.ApplicationMessage.QualityOfServiceLevel}";
|
||||
|
||||
await Dispatcher.RunAsync(CoreDispatcherPriority.Low, () =>
|
||||
{
|
||||
@@ -524,6 +534,13 @@ namespace MQTTnet.TestApp.UniversalWindows
|
||||
Console.WriteLine();
|
||||
});
|
||||
|
||||
void Handler(MqttApplicationMessageReceivedEventArgs args)
|
||||
{
|
||||
//...
|
||||
}
|
||||
|
||||
client.UseApplicationMessageReceivedHandler(Handler);
|
||||
|
||||
// Subscribe after connect
|
||||
|
||||
client.UseConnectedHandler(async e =>
|
||||
|
||||
Reference in New Issue
Block a user