示例#1
0
        public SubscribeClient(MqttEntity model)
        {
            string topic = model.topic;
            string host  = model.host;
            // 实例化Mqtt客户端
            MqttClient client = new MqttClient(host);

            // 注册接收消息事件
            client.MqttMsgPublishReceived += client_MqttMsgPublishReceived;

            client.Connect(model.groupId + "@@@" + model.clientId, model.userName, model.password);

            // 订阅主题 "/home/temperature", 订阅质量 QoS 2
            client.Subscribe(new string[] { topic }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE });
        }
示例#2
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>();
        }