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 算力,解读结果公开显示在下面。
还没有人解读过这个文件。