Exemplo n.º 1
0
        public MqttPublisher(
            ILogger <MqttPublisher> logger,
            DeviceConfigModel deviceConfigModel,
            IConfigurationService configurationService)
        {
            this._logger               = logger;
            this.DeviceConfigModel     = deviceConfigModel;
            this._configurationService = configurationService;

            var options = _configurationService.GetMqttClientOptionsAsync().Result;

            _configurationService.MqqtConfigChangedHandler = this.ReplaceMqttClient;

            var factory = new MqttFactory();

            this._mqttClient = factory.CreateMqttClient();

            if (options != null)
            {
                this._mqttClient.ConnectAsync(options);
                this._mqttClientMessage = "Connecting...";
            }
            else
            {
                this._mqttClientMessage = "Not configured";
            }

            this._mqttClient.UseConnectedHandler(e => {
                this._mqttClientMessage = "All good";
            });

            // configure what happens on disconnect
            this._mqttClient.UseDisconnectedHandler(async e =>
            {
                this._mqttClientMessage = e.ReasonCode.ToString();
                if (e.ReasonCode != MQTTnet.Client.Disconnecting.MqttClientDisconnectReason.NormalDisconnection)
                {
                    _logger.LogWarning("Disconnected from server");
                    await Task.Delay(TimeSpan.FromSeconds(5));

                    try
                    {
                        await this._mqttClient.ConnectAsync(options, CancellationToken.None);
                    }
                    catch (Exception ex)
                    {
                        _logger.LogError(ex, "Reconnecting failed");
                    }
                }
            });
        }
Exemplo n.º 2
0
        public MqttPublisher(
            ILogger <MqttPublisher> logger,
            DeviceConfigModel deviceConfigModel,
            IConfigurationService configurationService)
        {
            this.Subscribers           = new List <AbstractCommand>();
            this._logger               = logger;
            this.DeviceConfigModel     = deviceConfigModel;
            this._configurationService = configurationService;

            var options = _configurationService.GetMqttClientOptionsAsync().Result;

            _configurationService.MqqtConfigChangedHandler = this.ReplaceMqttClient;

            var factory = new MqttFactory();

            this._mqttClient = factory.CreateManagedMqttClient();

            if (options != null)
            {
                this._mqttClient.StartAsync(options);
                this._mqttClientMessage = "Connecting...";
            }
            else
            {
                this._mqttClientMessage = "Not configured";
            }

            this._mqttClient.UseConnectedHandler(e => {
                this._mqttClientMessage = "All good";
            });
            this._mqttClient.UseApplicationMessageReceivedHandler(e => this.HandleMessageReceived(e.ApplicationMessage));

            // configure what happens on disconnect
            this._mqttClient.UseDisconnectedHandler(e =>
            {
                this._mqttClientMessage = e.ReasonCode.ToString();
            });
        }