C#MQTTNET客户端使用说明

时间:2025-03-16 07:55:07

C#MQTTNET客户端使用说明

    • 1.如何使用
      • 1.我想启动MQTT客户端,我该怎么做?
      • 2.我想收到服务器发来消息,我该怎么做?
      • 3.我想知道客户端是否连接成功,我该怎么做?
      • 3.我想知道怎样重连服务器,我该怎么做?

1.如何使用

代码github地址

1.我想启动MQTT客户端,我该怎么做?

  try
  {
   IMqttClient client = new MqttFactory().CreateMqttClient();
   var build = new MqttClientOptionsBuilder()
  //配置客户端Id
  .WithClientId()
  //配置登录账号
  .WithCredentials("test","1234")
  //配置服务器IP端口 这里得端口号是可空的
  .WithTcpServer("192.168.0.1", "8080")
  //.WithTcpServer("")这是一个例子
  ;
  //连接
  await (());    
  } 
  catch (MqttConnectingFailedException) {
    ("身份校验失败");
  }
 catch (Exception ex){
     var name = ().FullName;
     ("出现异常");
     ();
}

2.我想收到服务器发来消息,我该怎么做?

 = new MqttApplicationMessageReceivedHandlerDelegate(MessageReceivedHandler);
/// <summary>
/// 收到消息
/// </summary>
/// <param name="obj"></param>
private void MessageReceivedHandler(MqttApplicationMessageReceivedEventArgs obj)
{
  ("===================================================");
  ("收到消息:");
  ($"主题:{}");
  ($"消息:{Encoding.()}");
  ("+++++++++++++++++++++++++++++++++++++++++++++++++++");
  ();
}
(args=> {
   ("===================================================");
   ("收到消息:");
   ($"主题:{}");
   ($"消息:{Encoding.()}");
   ("+++++++++++++++++++++++++++++++++++++++++++++++++++");
   ();
});

3.我想知道客户端是否连接成功,我该怎么做?

//连接成功 
 = new MqttClientConnectedHandlerDelegate(ConnectedHandler);
/// <summary>
/// 连接成功 在此处做订阅主题(Topic)操作
/// </summary>
/// <param name="obj"></param>
private void ConnectedHandler(MqttClientConnectedEventArgs obj)
{
	("本客户端已连接成功");
	($"地址:{}");
	($"端口:{}");
	($"客户端:{}");
	($"账号:{}");
	();
	//第1种订阅方式
	("主题名称").GetAwaiter().GetResult();

	//第2种订阅方式
	List<MqttTopicFilter> Topics = new List<MqttTopicFilter>();
	(new MqttTopicFilter() { Topic= "主题名称A", QualityOfServiceLevel= });
	(new MqttTopicFilter() { Topic = "主题名称B" });
	(new MqttTopicFilter() { Topic = "主题名称C" });
	(()).GetAwaiter().GetResult();

	//第3种订阅方式
	MqttClientSubscribeOptionsBuilder builder = new MqttClientSubscribeOptionsBuilder();
	("AAA");
	(()).GetAwaiter().GetResult();
}
(args=> {
	("本客户端已连接成功");
	($"地址:{}");
	($"端口:{}");
	($"客户端:{}");
	($"账号:{}");
	();
	//第1种订阅方式
	("主题名称").GetAwaiter().GetResult();

	//第2种订阅方式
	List<MqttTopicFilter> Topics = new List<MqttTopicFilter>();
	(new MqttTopicFilter() { Topic = "主题名称A", QualityOfServiceLevel =  });
    (new MqttTopicFilter() { Topic = "主题名称B" });
    (new MqttTopicFilter() { Topic = "主题名称C" });
    (()).GetAwaiter().GetResult();

    //第3种订阅方式
    MqttClientSubscribeOptionsBuilder builder = new MqttClientSubscribeOptionsBuilder();
    ("AAA");
    (()).GetAwaiter().GetResult();
});

3.我想知道怎样重连服务器,我该怎么做?

//断开连接 重连就写在此处
 = new MqttClientDisconnectedHandlerDelegate(DisconnectedHandler);
/// <summary>
/// 客户端断开连接后,如果需要重连在此处实现
/// </summary>
/// <param name="obj"></param>
private void DisconnectedHandler(MqttClientDisconnectedEventArgs obj)
{
	("本客户端已经断开连接");
	();
	try
	{
		(options).GetAwaiter().GetResult();
	}
	catch (Exception)
	{
		("重连失败");
	}
}
(args =>
{
	("本客户端已经断开连接");
	();
	try
	{
		(options).GetAwaiter().GetResult();
	}
	catch (Exception)
	{
		("重连失败");
	}
});