Add extension library for WebSocket4Net usage.

This commit is contained in:
Christian Kratky
2019-05-18 09:48:44 +02:00
parent e96b66e9f8
commit d1a17314ef
15 changed files with 448 additions and 21 deletions
@@ -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 =>