MQTTnet 开源项目安装与使用指南
目录结构及介绍
在克隆了 MQTTnet 的 Github 仓库之后,你会看到以下主要的目录和文件结构:
-
Samples: 包含了多个示例项目来展示如何使用 MQTTnet 进行消息通信。
- Samples/Sample.Client: 展示客户端功能的例子。
- Samples/Sample.Server: 展示服务器端功能的例子。
-
Source: 主要的代码库所在位置,包含了 MQTTnet 各部分的核心实现。
- MQTTnet: 核心库,提供了 MQTT 客户端和服务端的支持。
- MQTTnet.Protocol: 实现 MQTT 协议相关逻辑的部分。
- MQTTnet.Client: 提供 MQTT 客户端所需的全部功能。
- MQTTnet.Server: 提供 MQTT 服务端(Broker)的功能。
- MQTTnet.Diagnostics: 用于诊断和调试 MQTT 应用程序的工具集。
- MQTTnet: 核心库,提供了 MQTT 客户端和服务端的支持。
-
editorconfig: 编辑器设置文件,确保代码风格的一致性。
-
gitattributes: Git 配置属性,用于指定某些类型的文件应该以什么方式处理。
-
gitignore: 列出了在版本控制中应被忽略的文件或目录模式列表。
-
CODE-OF-CONDUCT.md: 行为准则文件,指导项目参与者如何进行社区互动。
-
LICENSE: 许可证文件,说明了项目的版权和使用许可。
-
MQTTnet.sln: 解决方案文件,包含了所有的项目和依赖关系,是构建整个项目的基础。
启动文件介绍
MQTTnet 没有单一的“启动”文件,因为它既可以作为单独的应用运行也可以作为现有应用的一部分集成。但是,在示例目录中 (Samples
) ,你可以找到不同的 .NET 类库项目,它们各自都有一个 Program.cs 文件或者 Startup.cs 文件可以视为项目的入口点。
例如,在 Samples/Sample.Client
中的 Program.cs 可被视为客户端的启动文件:
public class Program
{
public static async Task Main(string[] args)
{
var options = new MqttClientOptionsBuilder()
.WithTcpServer("localhost")
.Build();
using(var mqttClient = new MqttFactory().CreateMqttClient())
{
await mqttClient.ConnectAsync(options);
// 其他操作如发布消息或订阅主题...
}
}
}
类似地,Samples/Sample.Server
内的 Startup.cs 可视为服务端(Broker)的启动文件:
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddSingleton<MqttFactory>();
// 添加 MQTT Server 组件
services.Configure<MqttServerOptions>(Configuration.GetSection(nameof(MqttServerOptions)));
services.AddSingleton<IMqttServer, MqttServer>();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// 其它中间件注册...
// 注册 MQTT 服务端组件到 ASP.NET Core 管道
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
// 其它 endpoint 映射
});
}
}
这些文件中的代码提供了创建和连接 MQTT Client 或 Server 的基本流程,以及整合至 ASP.NET Core 应用的方式。
配置文件介绍
MQTTnet 使用多种配置方法,其中一部分是通过代码中直接配置(如上述示例),另一些则可能通过应用程序配置文件(.NET Core 应用常使用的 appsettings.json)完成。
以下是 appsettings.json
示例,演示了如何配置 MQTT Server Options:
{
"MqttServer": {
"Endpoint": {
"Port": 1883,
"NetworkInterface": null
},
"Persistence": {
"Type": "Memory",
"ConnectionString": ""
},
"Session": {
"EnablePersistence": true,
"CleanupSessionsIntervalInSeconds": 300,
"ClearPersistentSessionDataWhenExpired": false,
"AutoStart": true,
"UserValidator": null,
"ClientIdValidator": null
}
}
}
这段 JSON 配置允许定义 MQTT 服务端的网络接口、端口以及持久化选项等。当使用 ASP.NET Core 集成时,可以在 Startup.cs 文件中读取并使用这些配置来初始化 MQTT Server。