123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- using MQTTnet;
- using MQTTnet.Protocol;
- using MQTTnet.Server;
- using System.Text;
- namespace MQTTServer.Controllers
- {
- public static class MQTTSERVER {
- public static async Task<bool> InitMQTTServerAsync()
- {
- var mqttServer = CreateMqttServer();
- mqttServer.ValidatingConnectionAsync += e =>
- {
-
-
-
-
- if (e.UserName != "HSClient")
- {
- e.ReasonCode = MqttConnectReasonCode.BadUserNameOrPassword;
- }
- if (e.Password != "HS202503")
- {
- e.ReasonCode = MqttConnectReasonCode.BadUserNameOrPassword;
- }
- return Task.CompletedTask;
- };
-
- await StartMqttServer(mqttServer);
- Console.WriteLine("MQTT Server started. Press Enter to exit.");
-
-
-
- return true;
- }
- static MqttServer CreateMqttServer()
- {
- var optionsBuilder = new MqttServerOptionsBuilder()
- .WithDefaultEndpoint()
- .WithDefaultEndpointPort(1883)
- .WithConnectionBacklog(100)
- .WithPersistentSessions ()
- ;
- return new MqttServerFactory().CreateMqttServer(optionsBuilder.Build());
- }
- static async Task StartMqttServer(MqttServer mqttServer)
- {
- mqttServer.ClientConnectedAsync += OnClientConnected;
- mqttServer.ClientDisconnectedAsync += OnClientDisconnected;
- mqttServer.ClientSubscribedTopicAsync += OnClientSubscribed;
- mqttServer.ApplicationMessageEnqueuedOrDroppedAsync += MqttServer_ApplicationMessageEnqueuedOrDroppedAsync;
- await mqttServer.StartAsync();
- }
- private static Task MqttServer_ApplicationMessageEnqueuedOrDroppedAsync(ApplicationMessageEnqueuedEventArgs arg)
- {
-
- Console.WriteLine($"Message received on [{arg.ApplicationMessage.Topic}]: {arg.SenderClientId}, {arg.ReceiverClientId}, {arg.ApplicationMessage.Payload}");
- return Task.CompletedTask;
- }
- static Task OnClientConnected(ClientConnectedEventArgs arg)
- {
- Console.WriteLine($"Client connected: {arg.ClientId}");
- return Task.CompletedTask;
- }
- static Task OnClientDisconnected(ClientDisconnectedEventArgs arg)
- {
- Console.WriteLine($"Client disconnected: {arg.ClientId}");
- return Task.CompletedTask;
- }
-
-
-
-
-
-
-
-
-
-
- static Task OnClientSubscribed(ClientSubscribedTopicEventArgs context)
- {
- Console.WriteLine($"Client [{context.ClientId}] subscribed to: {context.TopicFilter.Topic}");
- return Task.CompletedTask;
- }
- }
- }
|