From d481e9383295cdbec3c4bdace8c2c6163f6a825f Mon Sep 17 00:00:00 2001 From: Christian <6939810+chkr1011@users.noreply.github.com> Date: Tue, 25 Oct 2022 17:29:45 +0200 Subject: [PATCH] Add new samples. --- Samples/Server/Server_Intercepting_Samples.cs | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 Samples/Server/Server_Intercepting_Samples.cs diff --git a/Samples/Server/Server_Intercepting_Samples.cs b/Samples/Server/Server_Intercepting_Samples.cs new file mode 100644 index 00000000..62129c6d --- /dev/null +++ b/Samples/Server/Server_Intercepting_Samples.cs @@ -0,0 +1,47 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +// ReSharper disable UnusedType.Global +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable EmptyConstructor +// ReSharper disable MemberCanBeMadeStatic.Local + +using MQTTnet.Internal; +using MQTTnet.Server; + +namespace MQTTnet.Samples.Server; + +public static class Server_Intercepting_Samples +{ + public static async Task Intercept_Application_Messages() + { + /* + * This sample starts a simple MQTT server which manipulate all processed application messages. + * Please see _Server_Simple_Samples_ for more details on how to start a server. + */ + + var mqttFactory = new MqttFactory(); + var mqttServerOptions = new MqttServerOptionsBuilder().WithDefaultEndpoint().Build(); + + using (var mqttServer = mqttFactory.CreateMqttServer(mqttServerOptions)) + { + mqttServer.InterceptingPublishAsync += args => + { + // Here we only change the topic of the received application message. + // but also changing the payload etc. is required. Changing the QoS after + // transmitting is not supported and makes no sense at all. + args.ApplicationMessage.Topic += "/manipulated"; + + return CompletedTask.Instance; + }; + + await mqttServer.StartAsync(); + + Console.WriteLine("Press Enter to exit."); + Console.ReadLine(); + await mqttServer.StopAsync(); + } + } +} \ No newline at end of file