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; }
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); }