Example #1
0
        public CustomMqttFactory(MqttSettingsModel settings, ILogger <MqttServer> logger)
        {
            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings));
            }
            if (logger == null)
            {
                throw new ArgumentNullException(nameof(logger));
            }

            // It is important to avoid injecting the logger wrapper to ensure that no
            // unused log messages are generated by the MQTTnet library. Debug logging
            // has a huge performance impact.
            if (settings.EnableDebugLogging)
            {
                var mqttNetLogger = new MqttNetLoggerWrapper(logger);
                _mqttFactory = new MqttFactory(mqttNetLogger);

                logger.LogWarning("Debug logging is enabled. Performance of MQTTnet Server is decreased!");
            }
            else
            {
                _mqttFactory = new MqttFactory();
            }

            Logger = _mqttFactory.DefaultLogger;
        }
Example #2
0
        public async Task RunAsync()
        {
            if (bool.Parse(_configuration.GetSection("MQTT").GetSection("EnableDebugLogging").Value))
            {
                var mqttNetLogger = new MqttNetLoggerWrapper(_logger);
                _mqttFactory = new MqttFactory(mqttNetLogger);

                _logger.LogWarning("Debug logging is enabled. Performance of MQTTnet Server is decreased!");
            }
            else
            {
                _mqttFactory = new MqttFactory();
            }

            var server = _mqttFactory.CreateMqttServer();

            var serverOptions = new MqttServerOptionsBuilder()
                                .WithDefaultEndpointBoundIPAddress(IPAddress.Parse(_configuration.GetSection("MQTT").GetSection("IP").Value))
                                .WithDefaultEndpointBoundIPV6Address(IPAddress.None)
                                .WithDefaultEndpointPort(int.Parse(_configuration.GetSection("MQTT").GetSection("Port").Value))
                                .Build();

            server.ApplicationMessageReceivedHandler = _messageReceivedHandler;
            server.ClientConnectedHandler            = _clientConnectedHandler;
            server.ClientDisconnectedHandler         = _clientDisconnectedHandler;

            await server.StartAsync(serverOptions);
        }