最新要闻

广告

手机

第一届广西最美医务工作者名单日前揭晓

第一届广西最美医务工作者名单日前揭晓

10岁女孩揽下2金1银,湖北省青少年射击锦标赛带来惊喜

10岁女孩揽下2金1银,湖北省青少年射击锦标赛带来惊喜

家电

MQTTnet4入门(二)实现客户端

来源:博客园


【资料图】

上一篇写服务端的文章《MQTTnet4入门(一)实现服务端》已经是去年年底,现在MQTTnet的版本是4.2.1.781,总的来说改动不大。下面以新版为例实现一个客户端。

var mqttClientOptions = new MqttClientOptionsBuilder()            .WithTcpServer("地址", 端口)            .WithClientId("我是客户端名称")//连接id            .WithCredentials("demo","123456")//如果有用户名密码            .WithTls()//如果启用了ssl/tls            .WithProtocolVersion(MqttProtocolVersion.V500)//如果用mqtt5            .Build();//配置        IMqttClient client = new MqttFactory().CreateMqttClient();//创建连接        client.ApplicationMessageReceivedAsync += MqttClient_ApplicationMessageReceivedAsync;//收到消息的事件        client.ConnectedAsync += Client_ConnectedAsync;//连接成功的事件        client.ConnectingAsync += Client_ConnectingAsync;//连接中的事件

配置里面一个大坑害我调了一个小时,如果mqtt服务端需要用户名和密码,那么使用.WithCredentials()来填写。我一直以为是.WithUserProperty(),极有迷惑性。

连接并订阅主题:

while (true){    try    {        if (!await client.TryPingAsync())        {            await client.ConnectAsync(mqttClientOptions, CancellationToken.None);            var mqttSubscribeOptions = new MqttFactory().CreateSubscribeOptionsBuilder()                .WithTopicFilter(                f =>                {                    f.WithTopic("shi");//订阅主题                })                .Build();            await client.SubscribeAsync(mqttSubscribeOptions);        }    }    catch    {        // 错误    }    finally    {        // 每5秒检查一次连接状态,连接失败重连        await Task.Delay(TimeSpan.FromSeconds(5));    }}

关键词: