mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-15 00:15:15 +08:00
91 lines
2.9 KiB
C#
91 lines
2.9 KiB
C#
// Licensed to the .NET Foundation under one or more agreements.
|
|
// The .NET Foundation licenses this file to you under the MIT license.
|
|
// See the LICENSE file in the project root for more information.
|
|
|
|
using MQTTnet.Protocol;
|
|
using MQTTnet.Server;
|
|
|
|
namespace MQTTnet.Samples.Server;
|
|
|
|
public static class Server_Simple_Samples
|
|
{
|
|
public static async Task Run_Minimal_Server()
|
|
{
|
|
/*
|
|
* This sample starts a simple MQTT server which will accept any TCP connection.
|
|
*/
|
|
|
|
var mqttFactory = new MqttFactory();
|
|
|
|
// The port for the default endpoint is 1883.
|
|
// The default endpoint is NOT encrypted!
|
|
// Use the builder classes where possible.
|
|
var mqttServerOptions = new MqttServerOptionsBuilder()
|
|
.WithDefaultEndpoint()
|
|
.Build();
|
|
|
|
// The port can be changed using the following API (not used in this example).
|
|
new MqttServerOptionsBuilder()
|
|
.WithDefaultEndpoint()
|
|
.WithDefaultEndpointPort(1234)
|
|
.Build();
|
|
|
|
using (var mqttServer = mqttFactory.CreateMqttServer(mqttServerOptions))
|
|
{
|
|
await mqttServer.StartAsync();
|
|
|
|
Console.WriteLine("Press Enter to exit.");
|
|
Console.ReadLine();
|
|
|
|
// Stop and dispose the MQTT server if it is no longer needed!
|
|
await mqttServer.StopAsync();
|
|
}
|
|
}
|
|
|
|
public static async Task Validating_Connections()
|
|
{
|
|
/*
|
|
* This sample starts a simple MQTT server which will check for valid credentials and client ID.
|
|
*
|
|
* See _Run_Minimal_Server_ for more information.
|
|
*/
|
|
|
|
var mqttFactory = new MqttFactory();
|
|
|
|
var mqttServerOptions = new MqttServerOptionsBuilder()
|
|
.WithDefaultEndpoint()
|
|
.Build();
|
|
|
|
using (var mqttServer = mqttFactory.CreateMqttServer(mqttServerOptions))
|
|
{
|
|
// Setup connection validation before starting the server so that there is
|
|
// no change to connect without valid credentials.
|
|
mqttServer.ValidatingConnectionAsync += e =>
|
|
{
|
|
if (e.ClientId != "ValidClientId")
|
|
{
|
|
e.ReasonCode = MqttConnectReasonCode.ClientIdentifierNotValid;
|
|
}
|
|
|
|
if (e.Username != "ValidUser")
|
|
{
|
|
e.ReasonCode = MqttConnectReasonCode.BadUserNameOrPassword;
|
|
}
|
|
|
|
if (e.Password != "SecretPassword")
|
|
{
|
|
e.ReasonCode = MqttConnectReasonCode.BadUserNameOrPassword;
|
|
}
|
|
|
|
return Task.CompletedTask;
|
|
};
|
|
|
|
await mqttServer.StartAsync();
|
|
|
|
Console.WriteLine("Press Enter to exit.");
|
|
Console.ReadLine();
|
|
|
|
await mqttServer.StopAsync();
|
|
}
|
|
}
|
|
} |