Esempio n. 1
0
        public async Task <MQTTConnectResult> ConnectAsync(bool ssl = false)
        {
            try
            {
                _mqttClient = new MqttClient(_channel);
                _mqttClient.Init(BrokerHostName, BrokerPort, false);
                _mqttClient.ConnectionClosed       += MqttClient_ConnectionClosed;
                _mqttClient.MqttMsgPublished       += MqttClient_MqttMsgPublished;
                _mqttClient.MqttMsgSubscribed      += MqttClient_MqttMsgSubscribed;
                _mqttClient.MqttMsgPublishReceived += MqttClient_MqttMsgArrived;

                var result = await _mqttClient.Connect(ClientId, UserName, Password);

                if (ConnectionStateChanged != null && result == ConnAck.Accepted)
                {
                    ConnectionStateChanged(this, true);
                }

                return(new MQTTConnectResult(ConnAck.Accepted));
            }
            catch (MqttCommunicationException ex)
            {
                LogException("MQTTClient-Connect", ex);
                return(new MQTTConnectResult(ConnAck.Exception, ex.Message));
            }
            catch (MqttConnectionException ex)
            {
                return(new MQTTConnectResult(ConnAck.ServerUnavailable, ex.Message));
            }
            catch (MqttClientException ex)
            {
                return(new MQTTConnectResult(ConnAck.Exception, ex.Message));
            }
            catch (Exception ex)
            {
                LogException("MQTTClient-Connect", ex);
                return(new MQTTConnectResult(ConnAck.Exception, ex.Message));
            }
        }