src/sample/XXX.Plugin.MQTTServer/MQTTServerStartup .cs

(开头部分) 9KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using MQTTnet;
using MQTTnet.Client.Receiving;
using MQTTnet.Protocol;
using MQTTnet.Server;
using NetPro.MQTTClient;
using System.Collections.Concurrent;
using System.NetPro;
using System.Text;

namespace XXX.Plugin.MQTTServer
{
    /// <summary>
    /// MQTT Broker 服务器示例
    /// 端口默认1883
    /// http中间件不会命中mqtt请求,两套管道
    /// </summary>
    public class MQTTServerStartup //: INetProStartup
    {
        /// <summary>
        /// 执行顺序
        /// </summary>
        public double Order { get; set; } = int.MaxValue;

        /// <summary>
        /// 服务注入
        /// https://github.com/chkr1011/MQTTnet
        /// https://www.cnblogs.com/night-w/p/14103391.html
        /// https://github.com/SeppPenner/SimpleMqttServer
        /// https://github.com/Atlas-LiftTech/MQTTnet.AspNetCore.AttributeRouting
        /// https://github.com/ifm/iot-core/blob/8a9b451ac0990d9f455525f3a52d5f23856e85ec/tests/ifmIoTCore.NetAdapter.Mqtt.UnitTests/MqttTests2.cs
        /// </summary>
        /// <param name="services"></param>
        /// <param name="configuration"></param>
        /// <param name="typeFinder"></param>
        public void ConfigureServices(IServiceCollection services, IConfiguration configuration = null, ITypeFinder typeFinder = null)
        {
            //services.AddMQTTClient(GetConnectionString);
            var optionsBuilder = new MqttServerOptionsBuilder()
                        .WithDefaultEndpointReuseAddress()
                        .WithDefaultEndpointPort(1883)
                        .WithConnectionValidator(
                         c =>
                         {
                             //比对连接的账户密码与配置是否匹配
                             //c.ClientId //针对于clientid做校验
                             var currentUser = new { UserName = "netpro", Password = "netpro" };

                             if (currentUser == null)
                             {
                                 c.ReasonCode = MqttConnectReasonCode.BadUserNameOrPassword;
                                 c.ReasonString = $"用户不合法";
                                 Console.WriteLine($"用户不存在");
                                 return;
                             }

                             if (c.Username != currentUser.UserName)
后面还有 130 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。