From 32473af7c2964f9c4125bd6d86bb7a1d52bd90ed Mon Sep 17 00:00:00 2001 From: Christian Kratky Date: Mon, 18 Sep 2017 18:20:36 +0200 Subject: [PATCH] Refactor web socket usage --- .../Implementations/MqttTcpChannel.cs | 16 ++++++++----- .../Implementations/MqttWebSocketChannel.cs | 24 ++++++++++++++----- .../MQTTnet.NetFramework/MqttClientFactory.cs | 6 ++--- .../Implementations/MqttTcpChannel.cs | 6 ++--- .../Implementations/MqttWebSocketChannel.cs | 24 ++++++++++++++----- .../MQTTnet.NetStandard/MqttClientFactory.cs | 2 -- .../Implementations/MqttTcpChannel.cs | 8 +++---- .../Implementations/MqttWebSocketChannel.cs | 24 ++++++++++++++----- .../MqttClientFactory.cs | 2 -- .../Adapter/IMqttCommunicationAdapter.cs | 8 +++---- .../MqttChannelCommunicationAdapter.cs | 10 ++++---- MQTTnet.Core/Channel/BufferConstants.cs | 7 ------ .../Channel/IMqttCommunicationChannel.cs | 9 +++---- MQTTnet.Core/Client/MqttClient.cs | 4 ++-- MQTTnet.Core/Client/MqttConnectionType.cs | 4 +--- MQTTnet.Core/Server/MqttClientMessageQueue.cs | 6 ++--- .../Server/MqttClientSessionsManager.cs | 2 +- .../MqttPacketSerializerTests.cs | 2 +- .../TestMqttCommunicationAdapter.cs | 6 ++--- .../PerformanceTest.cs | 18 +++++++------- .../MQTTnet.TestApp.UniversalWindows.csproj | 2 +- .../MainPage.xaml | 5 ++++ .../MainPage.xaml.cs | 3 ++- .../Package.appxmanifest | 4 +++- 24 files changed, 116 insertions(+), 86 deletions(-) delete mode 100644 MQTTnet.Core/Channel/BufferConstants.cs diff --git a/Frameworks/MQTTnet.NetFramework/Implementations/MqttTcpChannel.cs b/Frameworks/MQTTnet.NetFramework/Implementations/MqttTcpChannel.cs index f7d85636..e378423c 100644 --- a/Frameworks/MQTTnet.NetFramework/Implementations/MqttTcpChannel.cs +++ b/Frameworks/MQTTnet.NetFramework/Implementations/MqttTcpChannel.cs @@ -12,6 +12,10 @@ namespace MQTTnet.Implementations { public sealed class MqttTcpChannel : IMqttCommunicationChannel, IDisposable { + // 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. + private Socket _socket; private SslStream _sslStream; @@ -34,9 +38,9 @@ namespace MQTTnet.Implementations CreateStreams(socket, sslStream); } - public Stream RawStream { get; private set; } public Stream SendStream { get; private set; } public Stream ReceiveStream { get; private set; } + public Stream RawReceiveStream { get; private set; } public async Task ConnectAsync(MqttClientOptions options) { @@ -67,8 +71,8 @@ namespace MQTTnet.Implementations public void Dispose() { - RawStream?.Dispose(); - RawStream = null; + RawReceiveStream?.Dispose(); + RawReceiveStream = null; ReceiveStream?.Dispose(); ReceiveStream = null; @@ -85,12 +89,12 @@ namespace MQTTnet.Implementations private void CreateStreams(Socket socket, Stream sslStream) { - RawStream = sslStream ?? new NetworkStream(socket); + RawReceiveStream = sslStream ?? new NetworkStream(socket); //cannot use this as default buffering prevents from receiving the first connect message //need two streams otherwise read and write have to be synchronized - SendStream = new BufferedStream(RawStream, BufferConstants.Size); - ReceiveStream = new BufferedStream(RawStream, BufferConstants.Size); + SendStream = new BufferedStream(RawReceiveStream, BufferSize); + ReceiveStream = new BufferedStream(RawReceiveStream, BufferSize); } private static X509CertificateCollection LoadCertificates(MqttClientOptions options) diff --git a/Frameworks/MQTTnet.NetFramework/Implementations/MqttWebSocketChannel.cs b/Frameworks/MQTTnet.NetFramework/Implementations/MqttWebSocketChannel.cs index 7455dd24..f898a78a 100644 --- a/Frameworks/MQTTnet.NetFramework/Implementations/MqttWebSocketChannel.cs +++ b/Frameworks/MQTTnet.NetFramework/Implementations/MqttWebSocketChannel.cs @@ -12,20 +12,32 @@ namespace MQTTnet.Implementations { private ClientWebSocket _webSocket; - public Stream RawStream { get; private set; } - public Stream SendStream => RawStream; - public Stream ReceiveStream => RawStream; + public Stream RawReceiveStream { get; private set; } + public Stream SendStream => RawReceiveStream; + public Stream ReceiveStream => RawReceiveStream; public async Task ConnectAsync(MqttClientOptions options) { + var uri = options.Server; + if (!uri.StartsWith("ws://", StringComparison.OrdinalIgnoreCase)) + { + uri = "ws://" + uri; + } + + if (options.Port.HasValue) + { + uri += ":" + options.Port; + } + _webSocket = new ClientWebSocket(); - await _webSocket.ConnectAsync(new Uri(options.Server), CancellationToken.None).ConfigureAwait(false); - RawStream = new WebSocketStream(_webSocket); + _webSocket.Options.KeepAliveInterval = options.KeepAlivePeriod; + await _webSocket.ConnectAsync(new Uri(uri), CancellationToken.None).ConfigureAwait(false); + RawReceiveStream = new WebSocketStream(_webSocket); } public async Task DisconnectAsync() { - RawStream = null; + RawReceiveStream = null; if (_webSocket == null) { diff --git a/Frameworks/MQTTnet.NetFramework/MqttClientFactory.cs b/Frameworks/MQTTnet.NetFramework/MqttClientFactory.cs index 8075f92d..ac997bc5 100644 --- a/Frameworks/MQTTnet.NetFramework/MqttClientFactory.cs +++ b/Frameworks/MQTTnet.NetFramework/MqttClientFactory.cs @@ -21,11 +21,9 @@ namespace MQTTnet switch (options.ConnectionType) { case MqttConnectionType.Tcp: - case MqttConnectionType.Tls: - return new MqttTcpChannel(); + return new MqttTcpChannel(); case MqttConnectionType.Ws: - case MqttConnectionType.Wss: - return new MqttWebSocketChannel(); + return new MqttWebSocketChannel(); default: throw new NotSupportedException(); diff --git a/Frameworks/MQTTnet.NetStandard/Implementations/MqttTcpChannel.cs b/Frameworks/MQTTnet.NetStandard/Implementations/MqttTcpChannel.cs index 962f7633..ff92edb8 100644 --- a/Frameworks/MQTTnet.NetStandard/Implementations/MqttTcpChannel.cs +++ b/Frameworks/MQTTnet.NetStandard/Implementations/MqttTcpChannel.cs @@ -33,10 +33,10 @@ namespace MQTTnet.Implementations ReceiveStream = (Stream)sslStream ?? new NetworkStream(socket); } - public Stream ReceiveStream { get; private set; } - public Stream RawStream => ReceiveStream; public Stream SendStream => ReceiveStream; - + public Stream ReceiveStream { get; private set; } + public Stream RawReceiveStream => ReceiveStream; + public async Task ConnectAsync(MqttClientOptions options) { if (options == null) throw new ArgumentNullException(nameof(options)); diff --git a/Frameworks/MQTTnet.NetStandard/Implementations/MqttWebSocketChannel.cs b/Frameworks/MQTTnet.NetStandard/Implementations/MqttWebSocketChannel.cs index 317aa821..b6c41d9c 100644 --- a/Frameworks/MQTTnet.NetStandard/Implementations/MqttWebSocketChannel.cs +++ b/Frameworks/MQTTnet.NetStandard/Implementations/MqttWebSocketChannel.cs @@ -12,20 +12,32 @@ namespace MQTTnet.Implementations { private ClientWebSocket _webSocket; - public Stream SendStream => RawStream; - public Stream ReceiveStream => RawStream; - public Stream RawStream { get; private set; } + public Stream SendStream => RawReceiveStream; + public Stream ReceiveStream => RawReceiveStream; + public Stream RawReceiveStream { get; private set; } public async Task ConnectAsync(MqttClientOptions options) { + var uri = options.Server; + if (!uri.StartsWith("ws://", StringComparison.OrdinalIgnoreCase)) + { + uri = "ws://" + uri; + } + + if (options.Port.HasValue) + { + uri += ":" + options.Port; + } + _webSocket = new ClientWebSocket(); - await _webSocket.ConnectAsync(new Uri(options.Server), CancellationToken.None); - RawStream = new WebSocketStream(_webSocket); + _webSocket.Options.KeepAliveInterval = options.KeepAlivePeriod; + await _webSocket.ConnectAsync(new Uri(uri), CancellationToken.None); + RawReceiveStream = new WebSocketStream(_webSocket); } public async Task DisconnectAsync() { - RawStream = null; + RawReceiveStream = null; if (_webSocket == null) { diff --git a/Frameworks/MQTTnet.NetStandard/MqttClientFactory.cs b/Frameworks/MQTTnet.NetStandard/MqttClientFactory.cs index 25ffd8c5..fe6b4f02 100644 --- a/Frameworks/MQTTnet.NetStandard/MqttClientFactory.cs +++ b/Frameworks/MQTTnet.NetStandard/MqttClientFactory.cs @@ -21,10 +21,8 @@ namespace MQTTnet switch (options.ConnectionType) { case MqttConnectionType.Tcp: - case MqttConnectionType.Tls: return new MqttTcpChannel(); case MqttConnectionType.Ws: - case MqttConnectionType.Wss: return new MqttWebSocketChannel(); default: diff --git a/Frameworks/MQTTnet.UniversalWindows/Implementations/MqttTcpChannel.cs b/Frameworks/MQTTnet.UniversalWindows/Implementations/MqttTcpChannel.cs index c1fb9a44..47062da8 100644 --- a/Frameworks/MQTTnet.UniversalWindows/Implementations/MqttTcpChannel.cs +++ b/Frameworks/MQTTnet.UniversalWindows/Implementations/MqttTcpChannel.cs @@ -26,7 +26,7 @@ namespace MQTTnet.Implementations public Stream SendStream { get; private set; } public Stream ReceiveStream { get; private set; } - public Stream RawStream { get; private set; } + public Stream RawReceiveStream { get; private set; } public async Task ConnectAsync(MqttClientOptions options) { @@ -56,7 +56,7 @@ namespace MQTTnet.Implementations ReceiveStream = _socket.InputStream.AsStreamForRead(); SendStream = _socket.OutputStream.AsStreamForWrite(); - RawStream = ReceiveStream; + RawReceiveStream = ReceiveStream; } public Task DisconnectAsync() @@ -67,8 +67,8 @@ namespace MQTTnet.Implementations public void Dispose() { - RawStream?.Dispose(); - RawStream = null; + RawReceiveStream?.Dispose(); + RawReceiveStream = null; SendStream?.Dispose(); SendStream = null; diff --git a/Frameworks/MQTTnet.UniversalWindows/Implementations/MqttWebSocketChannel.cs b/Frameworks/MQTTnet.UniversalWindows/Implementations/MqttWebSocketChannel.cs index 9d6b7ee9..942105d8 100644 --- a/Frameworks/MQTTnet.UniversalWindows/Implementations/MqttWebSocketChannel.cs +++ b/Frameworks/MQTTnet.UniversalWindows/Implementations/MqttWebSocketChannel.cs @@ -12,20 +12,32 @@ namespace MQTTnet.Implementations { private ClientWebSocket _webSocket = new ClientWebSocket(); - public Stream RawStream { get; private set; } - public Stream SendStream => RawStream; - public Stream ReceiveStream => RawStream; + public Stream RawReceiveStream { get; private set; } + public Stream SendStream => RawReceiveStream; + public Stream ReceiveStream => RawReceiveStream; public async Task ConnectAsync(MqttClientOptions options) { + var uri = options.Server; + if (!uri.StartsWith("ws://", StringComparison.OrdinalIgnoreCase)) + { + uri = "ws://" + uri; + } + + if (options.Port.HasValue) + { + uri += ":" + options.Port; + } + _webSocket = new ClientWebSocket(); - await _webSocket.ConnectAsync(new Uri(options.Server), CancellationToken.None).ConfigureAwait(false); - RawStream = new WebSocketStream(_webSocket); + _webSocket.Options.KeepAliveInterval = options.KeepAlivePeriod; + await _webSocket.ConnectAsync(new Uri(uri), CancellationToken.None).ConfigureAwait(false); + RawReceiveStream = new WebSocketStream(_webSocket); } public async Task DisconnectAsync() { - RawStream = null; + RawReceiveStream = null; if (_webSocket == null) { diff --git a/Frameworks/MQTTnet.UniversalWindows/MqttClientFactory.cs b/Frameworks/MQTTnet.UniversalWindows/MqttClientFactory.cs index 8075f92d..502539fc 100644 --- a/Frameworks/MQTTnet.UniversalWindows/MqttClientFactory.cs +++ b/Frameworks/MQTTnet.UniversalWindows/MqttClientFactory.cs @@ -21,10 +21,8 @@ namespace MQTTnet switch (options.ConnectionType) { case MqttConnectionType.Tcp: - case MqttConnectionType.Tls: return new MqttTcpChannel(); case MqttConnectionType.Ws: - case MqttConnectionType.Wss: return new MqttWebSocketChannel(); default: diff --git a/MQTTnet.Core/Adapter/IMqttCommunicationAdapter.cs b/MQTTnet.Core/Adapter/IMqttCommunicationAdapter.cs index d16579ed..866253ea 100644 --- a/MQTTnet.Core/Adapter/IMqttCommunicationAdapter.cs +++ b/MQTTnet.Core/Adapter/IMqttCommunicationAdapter.cs @@ -9,14 +9,14 @@ namespace MQTTnet.Core.Adapter { public interface IMqttCommunicationAdapter { - Task ConnectAsync(MqttClientOptions options, TimeSpan timeout); + IMqttPacketSerializer PacketSerializer { get; } - Task DisconnectAsync(); + Task ConnectAsync(TimeSpan timeout, MqttClientOptions options); + + Task DisconnectAsync(TimeSpan timeout); Task SendPacketsAsync(TimeSpan timeout, IEnumerable packets); Task ReceivePacketAsync(TimeSpan timeout); - - IMqttPacketSerializer PacketSerializer { get; } } } diff --git a/MQTTnet.Core/Adapter/MqttChannelCommunicationAdapter.cs b/MQTTnet.Core/Adapter/MqttChannelCommunicationAdapter.cs index 33a2f8ee..18d57765 100644 --- a/MQTTnet.Core/Adapter/MqttChannelCommunicationAdapter.cs +++ b/MQTTnet.Core/Adapter/MqttChannelCommunicationAdapter.cs @@ -26,11 +26,11 @@ namespace MQTTnet.Core.Adapter public IMqttPacketSerializer PacketSerializer { get; } - public async Task ConnectAsync(MqttClientOptions options, TimeSpan timeout) + public async Task ConnectAsync(TimeSpan timeout, MqttClientOptions options) { try { - await _channel.ConnectAsync(options).TimeoutAfter(timeout).ConfigureAwait(false); + await _channel.ConnectAsync(options).TimeoutAfter(timeout); } catch (MqttCommunicationTimedOutException) { @@ -46,11 +46,11 @@ namespace MQTTnet.Core.Adapter } } - public async Task DisconnectAsync() + public async Task DisconnectAsync(TimeSpan timeout) { try { - await _channel.DisconnectAsync().ConfigureAwait(false); + await _channel.DisconnectAsync().TimeoutAfter(timeout).ConfigureAwait(false); } catch (MqttCommunicationTimedOutException) { @@ -113,7 +113,7 @@ namespace MQTTnet.Core.Adapter ReceivedMqttPacket receivedMqttPacket; if (timeout > TimeSpan.Zero) { - receivedMqttPacket = await ReceiveAsync(_channel.RawStream).TimeoutAfter(timeout).ConfigureAwait(false); + receivedMqttPacket = await ReceiveAsync(_channel.RawReceiveStream).TimeoutAfter(timeout).ConfigureAwait(false); } else { diff --git a/MQTTnet.Core/Channel/BufferConstants.cs b/MQTTnet.Core/Channel/BufferConstants.cs deleted file mode 100644 index 3b441e0c..00000000 --- a/MQTTnet.Core/Channel/BufferConstants.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace MQTTnet.Core.Channel -{ - public static class BufferConstants - { - public const int Size = 4096 * 20; - } -} diff --git a/MQTTnet.Core/Channel/IMqttCommunicationChannel.cs b/MQTTnet.Core/Channel/IMqttCommunicationChannel.cs index 80c1308e..24525e86 100644 --- a/MQTTnet.Core/Channel/IMqttCommunicationChannel.cs +++ b/MQTTnet.Core/Channel/IMqttCommunicationChannel.cs @@ -6,14 +6,11 @@ namespace MQTTnet.Core.Channel { public interface IMqttCommunicationChannel { - Task ConnectAsync(MqttClientOptions options); - - Task DisconnectAsync(); - Stream SendStream { get; } - Stream ReceiveStream { get; } + Stream RawReceiveStream { get; } - Stream RawStream { get; } + Task ConnectAsync(MqttClientOptions options); + Task DisconnectAsync(); } } diff --git a/MQTTnet.Core/Client/MqttClient.cs b/MQTTnet.Core/Client/MqttClient.cs index 31d20daa..4ca43730 100644 --- a/MQTTnet.Core/Client/MqttClient.cs +++ b/MQTTnet.Core/Client/MqttClient.cs @@ -53,7 +53,7 @@ namespace MQTTnet.Core.Client { _disconnectedEventSuspended = false; - await _adapter.ConnectAsync(_options, _options.DefaultCommunicationTimeout).ConfigureAwait(false); + await _adapter.ConnectAsync(_options.DefaultCommunicationTimeout, _options).ConfigureAwait(false); MqttTrace.Verbose(nameof(MqttClient), "Connection with server established."); @@ -220,7 +220,7 @@ namespace MQTTnet.Core.Client { try { - await _adapter.DisconnectAsync(); + await _adapter.DisconnectAsync(_options.DefaultCommunicationTimeout).ConfigureAwait(false); } catch (Exception exception) { diff --git a/MQTTnet.Core/Client/MqttConnectionType.cs b/MQTTnet.Core/Client/MqttConnectionType.cs index 636054dc..830bf0b8 100644 --- a/MQTTnet.Core/Client/MqttConnectionType.cs +++ b/MQTTnet.Core/Client/MqttConnectionType.cs @@ -3,8 +3,6 @@ public enum MqttConnectionType { Tcp, - Tls, - Ws, - Wss + Ws } } diff --git a/MQTTnet.Core/Server/MqttClientMessageQueue.cs b/MQTTnet.Core/Server/MqttClientMessageQueue.cs index ae7cb7a7..0c0b6da8 100644 --- a/MQTTnet.Core/Server/MqttClientMessageQueue.cs +++ b/MQTTnet.Core/Server/MqttClientMessageQueue.cs @@ -56,7 +56,7 @@ namespace MQTTnet.Core.Server { if (_pendingPublishPackets.Count == 0) { - await Task.Delay(TimeSpan.FromMilliseconds(5)).ConfigureAwait(false); + await Task.Delay(TimeSpan.FromMilliseconds(5), cancellationToken).ConfigureAwait(false); continue; } @@ -71,7 +71,7 @@ namespace MQTTnet.Core.Server foreach (var publishPacket in packets) { publishPacket.Dup = true; - _pendingPublishPackets.Add(publishPacket); + _pendingPublishPackets.Add(publishPacket, cancellationToken); } } catch (Exception exception) @@ -80,7 +80,7 @@ namespace MQTTnet.Core.Server foreach (var publishPacket in packets) { publishPacket.Dup = true; - _pendingPublishPackets.Add(publishPacket); + _pendingPublishPackets.Add(publishPacket, cancellationToken); } } } diff --git a/MQTTnet.Core/Server/MqttClientSessionsManager.cs b/MQTTnet.Core/Server/MqttClientSessionsManager.cs index 483398de..f81b8bb6 100644 --- a/MQTTnet.Core/Server/MqttClientSessionsManager.cs +++ b/MQTTnet.Core/Server/MqttClientSessionsManager.cs @@ -64,7 +64,7 @@ namespace MQTTnet.Core.Server } finally { - await eventArgs.ClientAdapter.DisconnectAsync().ConfigureAwait(false); + await eventArgs.ClientAdapter.DisconnectAsync(_options.DefaultCommunicationTimeout).ConfigureAwait(false); } } diff --git a/Tests/MQTTnet.Core.Tests/MqttPacketSerializerTests.cs b/Tests/MQTTnet.Core.Tests/MqttPacketSerializerTests.cs index c759f237..d97949fe 100644 --- a/Tests/MQTTnet.Core.Tests/MqttPacketSerializerTests.cs +++ b/Tests/MQTTnet.Core.Tests/MqttPacketSerializerTests.cs @@ -394,7 +394,7 @@ namespace MQTTnet.Core.Tests public Stream ReceiveStream => _stream; - public Stream RawStream => _stream; + public Stream RawReceiveStream => _stream; public Stream SendStream => _stream; diff --git a/Tests/MQTTnet.Core.Tests/TestMqttCommunicationAdapter.cs b/Tests/MQTTnet.Core.Tests/TestMqttCommunicationAdapter.cs index e3e9028c..281d7fd7 100644 --- a/Tests/MQTTnet.Core.Tests/TestMqttCommunicationAdapter.cs +++ b/Tests/MQTTnet.Core.Tests/TestMqttCommunicationAdapter.cs @@ -18,12 +18,12 @@ namespace MQTTnet.Core.Tests public IMqttPacketSerializer PacketSerializer { get; } = new MqttPacketSerializer(); - public Task ConnectAsync(MqttClientOptions options, TimeSpan timeout) + public Task ConnectAsync(TimeSpan timeout, MqttClientOptions options) { return Task.FromResult(0); } - public Task DisconnectAsync() + public Task DisconnectAsync(TimeSpan timeout) { return Task.FromResult(0); } @@ -47,7 +47,7 @@ namespace MQTTnet.Core.Tests return Task.Run(() => _incomingPackets.Take()); } - public IEnumerable ReceivePackets( CancellationToken cancellationToken ) + public IEnumerable ReceivePackets(CancellationToken cancellationToken) { return _incomingPackets.GetConsumingEnumerable(); } diff --git a/Tests/MQTTnet.TestApp.NetFramework/PerformanceTest.cs b/Tests/MQTTnet.TestApp.NetFramework/PerformanceTest.cs index 2aee4069..56d62a0a 100644 --- a/Tests/MQTTnet.TestApp.NetFramework/PerformanceTest.cs +++ b/Tests/MQTTnet.TestApp.NetFramework/PerformanceTest.cs @@ -113,16 +113,16 @@ namespace MQTTnet.TestApp.NetFramework .Select(i => CreateMessage()) .ToList(); - if (false) - { - //send concurrent (test for raceconditions) - var sendTasks = msgs - .Select(msg => PublishSingleMessage(client, msg, ref msgCount)) - .ToList(); + ////if (false) + ////{ + //// //send concurrent (test for raceconditions) + //// var sendTasks = msgs + //// .Select(msg => PublishSingleMessage(client, msg, ref msgCount)) + //// .ToList(); - await Task.WhenAll(sendTasks); - } - else + //// await Task.WhenAll(sendTasks); + ////} + ////else { await client.PublishAsync(msgs); msgCount += msgs.Count; diff --git a/Tests/MQTTnet.TestApp.UniversalWindows/MQTTnet.TestApp.UniversalWindows.csproj b/Tests/MQTTnet.TestApp.UniversalWindows/MQTTnet.TestApp.UniversalWindows.csproj index fde3fa4e..d1dac53c 100644 --- a/Tests/MQTTnet.TestApp.UniversalWindows/MQTTnet.TestApp.UniversalWindows.csproj +++ b/Tests/MQTTnet.TestApp.UniversalWindows/MQTTnet.TestApp.UniversalWindows.csproj @@ -18,7 +18,7 @@ {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} true MQTTnet.TestApp.UniversalWindows_TemporaryKey.pfx - C5051872F588878B167FB976FDF249518AA2DDF0 + 13E377A693C923EE9E88EE84B32A4B9881657362 win10;win10-arm;win10-arm-aot;win10-x86;win10-x86-aot;win10-x64;win10-x64-aot diff --git a/Tests/MQTTnet.TestApp.UniversalWindows/MainPage.xaml b/Tests/MQTTnet.TestApp.UniversalWindows/MainPage.xaml index d4c48345..643460fa 100644 --- a/Tests/MQTTnet.TestApp.UniversalWindows/MainPage.xaml +++ b/Tests/MQTTnet.TestApp.UniversalWindows/MainPage.xaml @@ -24,6 +24,11 @@ ClientId: + + TCP + WS + + Use TLS Trace: diff --git a/Tests/MQTTnet.TestApp.UniversalWindows/MainPage.xaml.cs b/Tests/MQTTnet.TestApp.UniversalWindows/MainPage.xaml.cs index 9c1b60d3..88cce71f 100644 --- a/Tests/MQTTnet.TestApp.UniversalWindows/MainPage.xaml.cs +++ b/Tests/MQTTnet.TestApp.UniversalWindows/MainPage.xaml.cs @@ -1,4 +1,5 @@ using System; +using System.Threading.Tasks; using Windows.UI.Core; using Windows.UI.Xaml; using MQTTnet.Core.Client; @@ -40,7 +41,7 @@ namespace MQTTnet.TestApp.UniversalWindows Password = Password.Text, ClientId = ClientId.Text, TlsOptions = { UseTls = UseTls.IsChecked == true }, - ConnectionType = MqttConnectionType.Ws + ConnectionType = UseTcp.IsChecked == true ? MqttConnectionType.Tcp : MqttConnectionType.Ws }; try diff --git a/Tests/MQTTnet.TestApp.UniversalWindows/Package.appxmanifest b/Tests/MQTTnet.TestApp.UniversalWindows/Package.appxmanifest index 29638eaf..0eb9c888 100644 --- a/Tests/MQTTnet.TestApp.UniversalWindows/Package.appxmanifest +++ b/Tests/MQTTnet.TestApp.UniversalWindows/Package.appxmanifest @@ -1,5 +1,5 @@  - + @@ -24,5 +24,7 @@ + + \ No newline at end of file