|
上一篇写服务端的文章《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));
- }
- }
复制代码
来源:https://www.cnblogs.com/xpszy/archive/2023/08/18/17641731.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
|