mirror of
https://github.com/RRQM/TouchSocket.git
synced 2025-12-18 01:16:44 +08:00
文档:更新mqtt服务器部分
This commit is contained in:
@@ -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`);需根据服务端支持的版本设置,否则可能导致连接失败。 |
|
||||
|
||||
|
||||
84
handbook/docs/mqttservice.mdx
Normal file
84
handbook/docs/mqttservice.mdx
Normal 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();
|
||||
```
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user