Пример #1
0
        public MqttClientMain(IMqttService mqttService)
        {
            this.mqttService = mqttService;
            mqttClient       = new MqttFactory().CreateMqttClient();
            var option = new MqttClientOptionsBuilder()
                         .WithCleanSession(true)
                         .WithClientId("Main client")
                         .WithCommunicationTimeout(TimeSpan.FromSeconds(5))
                         .WithKeepAlivePeriod(TimeSpan.FromSeconds(5))
                         .WithProtocolVersion(MqttProtocolVersion.V311)
                         .WithTcpServer("127.0.0.1", Convert.ToInt32(1883));

            mqttClient.ConnectAsync(option.Build());
            mqttClient.Connected += (sender, e) =>
            {
                string str = string.Format("Main Client connected");
                Console.WriteLine(str);
            };

            mqttClient.Disconnected += (sender, e) =>
            {
                string str = string.Format("Main Client disconnected");
                Console.WriteLine(str);
            };
            mqttClient.ApplicationMessageReceived += (sender, e) =>
            {
                string result = System.Text.Encoding.UTF8.GetString(e.ApplicationMessage.Payload);
                string str    = string.Format("Main Client received message: {0}", result);
                Console.WriteLine(str);
                if (e.ApplicationMessage.Topic == "scale")
                {
                    MqttEntity mqttEntity = JsonConvert.DeserializeObject <MqttEntity>(result);
                    mqttService.UpdateWeightFromScale(mqttEntity);
                }

                if (e.ApplicationMessage.Topic.ToLower().Contains("state"))
                {
                    mqttService.UpdateOpenCabinet(e.ApplicationMessage.Topic.ToLower());
                }
            };
            listTopic = new List <string>();
        }