MQTTNet 客户端

MQTTNet版本:4.3.7.1207

static async Task Main(string[] args)
{
    //创建MQTT实例
    var mqttClient = new MqttFactory().CreateMqttClient();
    //创建连接设置和Build
    var options = new MqttClientOptionsBuilder()
        .WithTcpServer("localhost",1885)
        .WithCredentials("admin","admin123")
        .WithClientId(Guid.NewGuid().ToString())
        .Build();
    //连接
    var result = await mqttClient.ConnectAsync(options);
    //推送主题
    var messageBuilder = new MqttApplicationMessageBuilder()
        .WithTopic("testtopic/1")
        .WithQualityOfServiceLevel(MQTTnet.Protocol.MqttQualityOfServiceLevel.AtLeastOnce)
        .WithRetainFlag(false);
    //订阅主题
    var subTopic = new MqttTopicFilterBuilder()
        .WithTopic("testtopic/2")
        .Build();
    //接收消息事件
    mqttClient.ApplicationMessageReceivedAsync += MqttClient_ApplicationMessageReceivedAsync;


    if (mqttClient.IsConnected)
    {
        //订阅主题
        var subResult = await mqttClient.SubscribeAsync(subTopic);
        if(subResult.Items.Count > 0) Console.WriteLine($"订阅成功:{subTopic.Topic}");
        for (int i = 0; i < 10; i++)
        {
            //Build主题消息体
            var message = messageBuilder.WithPayload($"当前第{i}条").Build();
            //生产消息
            await mqttClient.PublishAsync(message);
            await Task.Delay(100);
        }
    }
    Console.WriteLine("结束");
    Console.ReadKey();
    await mqttClient.DisconnectAsync();
}

private static Task MqttClient_ApplicationMessageReceivedAsync(MqttApplicationMessageReceivedEventArgs msg)
{
    string text = msg.ApplicationMessage.ConvertPayloadToString();
    string topic = msg.ApplicationMessage.Topic;
    Console.WriteLine($"Topic:[{topic}];{Environment.NewLine}Payload:{Environment.NewLine}[{text}]{Environment.NewLine}");
    return Task.CompletedTask;//直接return null会报错
}
MQTTClient

 

posted @ 2024-11-27 14:54  坤机嘎嘎嘎  阅读(72)  评论(0)    收藏  举报