MQTT 实战-.NET 实现 Publisher、Subscriber(Client 端)

作者:vkvi 来源:ITPOW(原创) 日期:2022-5-1

承前节。

using MQTTnet;
using MQTTnet.Client;
using MQTTnet.Client.Options;
using System;
using System.Text;
using System.Threading.Tasks;

namespace Mqtt
{
    class Program
    {
        private static void MqqtClientTest()
        {
            var mqttClient = new MqttFactory().CreateMqttClient();

            mqttClient.UseConnectedHandler(
                args =>
                {
                    var topicFilter = new MqttTopicFilter();
                    topicFilter.Topic = "itpow/1/";
                    mqttClient.SubscribeAsync(topicFilter);
                    Console.WriteLine("connected.");
                });
            mqttClient.UseDisconnectedHandler(
                args =>
                {
                    Console.WriteLine("disconnected.");
                });
            mqttClient.UseApplicationMessageReceivedHandler(
                args =>
                {
                    string content = Encoding.UTF8.GetString(args.ApplicationMessage.Payload);
                    Console.WriteLine($"主题:{args.ApplicationMessage.Topic} 收到消息:{content}");

                    mqttClient.PublishAsync("itpow/2/", "ok"); // 再转发一个。
                });

            IMqttClientOptions options = new MqttClientOptionsBuilder()
                .WithTcpServer("127.0.0.1", 1883)
                //.WithWebSocketServer("ws://127.0.0.1:9000/ws")
                .WithClientId("afdssdfdssdf")
                .WithCredentials("itpow", "123456")
                .WithCleanSession()
                .Build();
            mqttClient.ConnectAsync(options);
        }
        
        static void Main(string[] args)
        {
            Task.Run(() =>
            {
                MqqtClientTest();
            });
            Console.ReadLine();
        }
    }
}



相关文章