using MQTTnet.Server;
using MQTTnet;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using MQTTnet.Packets;
using MQTTnet.Protocol;
using System.Text.Json;
using MQTTnet.Diagnostics;
using System.Net;
using MQTTnet.Client;
using System.Threading;
using System.Text.Json.Serialization;
using System.Security.Cryptography.X509Certificates;
using System.Security.Authentication;
using System.Data;
using System.Runtime.ConstrainedExecution;
using System.Collections;
namespace Mqtts
{
internal class Program
{
[Obsolete]
static async void StartClien()
{
//配置服务器相关的属性和证书
var factory = new MqttFactory();
var mqttClient = factory.CreateMqttClient();
var options = new MqttClientOptionsBuilder()
.WithClientId("yx")
.WithTcpServer("填写服务器域名或者ip", 端口号)
.WithCredentials("账号", "密码")
.WithTls(new MqttClientOptionsBuilderTlsParameters()
{
UseTls = true,
SslProtocol = System.Security.Authentication.SslProtocols.Tls12,
Certificates = new List<X509Certificate>
{
new X509Certificate2("D:\\聊天记录\\WeChat Files\\AA446909935\\FileStorage\\File\\2024-07\\MQTTS-clien.pem")
},
CertificateValidationHandler = delegate { return true; },
})
.WithCleanSession()
.Build();
//各种事件处理
mqttClient.DisconnectedAsync += (e) =>
{
Console.WriteLine("执行事件:DisconnectedAsync");
return Task.CompletedTask;
};
mqttClient.ConnectedAsync += async (e) =>
{
Console.WriteLine("执行事件:ConnectedAsync");
await mqttClient.SubscribeAsync(new MqttTopicFilterBuilder().WithTopic("$sys/wsPJHJI/fe/ewww/fffeeee/post/reply").Build());
};
mqttClient.ApplicationMessageReceivedAsync += (e) =>
{
string res = System.Text.Encoding.UTF8.GetString(e.ApplicationMessage.Payload);
Console.WriteLine("返回结果"+ res);
return Task.CompletedTask;
};
await mqttClient.ConnectAsync(options);
//发送消息
MqttApplicationMessage message = CreateMessage("$sys/bpJidfd/devicename/thinfe/eeaa/post", "{\"id\":\"111\",\"version\":\"1.0\",\"params\":{\"collectedData\":{\"value\":[{\"fdswq\":\"qqqq\",\"collectTime\":99999,\"equipfew\":\"222\",\"identifier\":\"3333\",\"drawinfde\":\"444\",\"addr\":\"555\",\"other\":\"666\"}]}}}");
await mqttClient.PublishAsync(message);
}
private static MqttApplicationMessage CreateMessage(string topic, string payload, bool retain = false)
{
try
{
var messageBuilder = new MqttApplicationMessageBuilder();
messageBuilder.WithTopic(topic);
messageBuilder.WithPayload(payload);
messageBuilder.WithRetainFlag(retain);
return messageBuilder.Build();
}
catch { }
return null;
}
static void Main(string[] args)
{
StartClien();
Console.ReadLine();
}
}
}