文档:更新mqtt服务器部分

This commit is contained in:
若汝棋茗
2025-06-25 23:17:46 +08:00
parent 0034e125bd
commit dbedaac22b
3 changed files with 91 additions and 2 deletions

View File

@@ -50,7 +50,7 @@ import Tag from "@site/src/components/Tag.js";
| `ClientId` | 3.1.1+ | 客户端唯一标识符服务端用于识别客户端Mqtt 3.1.1 中必填(长度 1-23 字节ASCII 字符5.0+ 允许空字符串(仅当服务端允许时)。 |
| `KeepAlive` | 3.1.1+ | 心跳保活时长(单位:秒),表示客户端与服务端保持连接的最长时间;需与服务端配置兼容(服务端可能拒绝过大或过小的值),默认值通常为 60 秒。 |
| `Password` | 3.1.1+ | 连接认证密码(与 `UserName` 配合使用);若 `UserName` 为空则无效5.0+ 支持二进制数据(需通过 `AuthenticationData` 传递)。 |
| `ProtocolName` | 3.1.1+ | Mqtt 协议名称(固定为 "Mqtt"),默认值为 "Mqtt",通常无需手动设置。 |
| `ProtocolName` | 3.1.1+ | Mqtt 协议名称(固定为 "MQTT"),默认值为 "MQTT",通常无需手动设置。 |
| `UserName` | 3.1.1+ | 连接认证用户名(与 `Password` 配合使用5.0+ 支持二进制数据(需通过 `AuthenticationData` 传递)。 |
| `Version` | 3.1.1+/5.0+ | Mqtt 协议版本(如 `MqttProtocolVersion.V311` 或 `V500`);需根据服务端支持的版本设置,否则可能导致连接失败。 |

View File

@@ -0,0 +1,84 @@
---
id: mqttservice
title: Mqtt服务器
---
import Tag from "@site/src/components/Tag.js";
### 定义
命名空间TouchSocket.Mqtt <br/>
程序集:[TouchSocket.Mqtt.dll](https://www.nuget.org/packages/TouchSocket.Mqtt)
## 一、说明
`MqttTcpService` 是基于 Mqtt 协议的消息服务端,支持客户端接入管理、订阅关系维护、消息路由转发、遗嘱消息处理等功能,兼容 Mqtt 3.1.1 及 5.0+ 协议版本。
## 二、特点
- 多协议版本支持v3.1.1/v5.0
- 高性能异步架构设计
- 主题树形管理机制
- 精确的 QoS 保障
- 遗嘱消息转发
- 插件化扩展体系
- TLS 加密通信
- 客户端黑白名单控制
## 三、应用场景
- 工业物联网平台
- 实时数据监控中心
- 智慧城市中枢系统
- 私有化消息总线
- 设备远程管理服务
## 四、可配置项
继承所有 [TcpService](./tcpservice.mdx) 的配置。除此之外还支持 Mqtt 服务端专有配置。
<details>
<summary>可配置项</summary>
<div>
</div>
</details>
## 五、支持插件
| 插件方法| 功能 |
| --- | --- |
| IMqttConnectingPlugin | 当Mqtt客户端正在连接之前调用此方法。 |
| IMqttConnectedPlugin | 当Mqtt客户端连接成功时调用。 |
| IMqttClosingPlugin | 当Mqtt客户端正在关闭时调用。|
| IMqttClosedPlugin | 当Mqtt客户端断开连接后触发。 |
| IMqttReceivingPlugin | 在收到Mqtt所有消息时触发可以通过`e.MqttMessage`获取到`Mqtt`的所有消息,包括订阅、订阅确认、发布、发布确认等。 |
| IMqttReceivedPlugin | 当接收到Mqtt发布消息且成功接收时触发。可以通过`e.MqttMessage`获取到`Mqtt`的发布消息。 |
## 六、创建Mqtt服务端
```csharp showLineNumbers
var service = new MqttTcpService();
await service.SetupAsync(new TouchSocketConfig()
.SetListenIPHosts(7789) // 监听所有网卡
.ConfigureContainer(a =>
{
a.AddConsoleLogger();
})
.ConfigurePlugins(a =>
{
a.AddMqttClientConnectedPlugin(async (service, e) =>
{
Console.WriteLine($"Client Connected:{e.ClientId}");
await e.InvokeNext();
});
a.AddMqttClientDisconnectedPlugin(async (service, e) =>
{
Console.WriteLine($"Client Disconnected:{e.ClientId}");
await e.InvokeNext();
});
}));
await service.StartAsync();
```

View File

@@ -619,7 +619,12 @@ module.exports =
"items": [
{
"type": "doc",
"label": "22.1 Mqtt客户端",
"label": "22.1 Mqtt服务端",
"id": "mqttservice"
},
{
"type": "doc",
"label": "22.2 Mqtt客户端",
"id": "mqttclient"
}
]