mm_mqtt_client 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +122 -0
  2. package/package.json +1 -1
package/README.md ADDED
@@ -0,0 +1,122 @@
1
+ # MQTT 客户端(mm_mqtt_client)
2
+
3
+ ## 说明
4
+ 基于 `mqtt.js` 封装的独立 MQTT 客户端,提供连接、订阅、发布与 RPC 请求能力。模块不依赖全局变量与原型扩展,可通过 `Admin` 按作用域缓存实例。
5
+
6
+ ## 功能特点
7
+
8
+ - 支持连接、重连、断开
9
+ - 支持主题订阅、取消订阅与多回调
10
+ - 支持发布消息与 JSON 消息发送
11
+ - 支持 RPC 请求:`req` 回调方式、`reqAsync` Promise 方式
12
+ - 支持响应主题模板 `{topic}`
13
+ - 请求超时自动回收,超时后回调错误信息
14
+ - 服务端可调用客户端注册在 `methods` 中的方法
15
+
16
+ ## 依赖
17
+
18
+ - `mm_helper`
19
+ - `mqtt`
20
+
21
+ ## 安装
22
+
23
+ ```bash
24
+ npm install mm_mqtt_client
25
+ ```
26
+
27
+ ## 快速开始
28
+
29
+ ```javascript
30
+ const { MqttClient } = require('mm_mqtt_client');
31
+
32
+ const client = new MqttClient({
33
+ host: '127.0.0.1',
34
+ port: '8083',
35
+ protocol: 'ws',
36
+ client_id: 'service123',
37
+ username: 'admin',
38
+ password: 'asd123'
39
+ });
40
+
41
+ await client.run();
42
+
43
+ // 订阅主题
44
+ client.subscribe('topic/demo', (msg) => {
45
+ console.log('收到消息:', msg);
46
+ });
47
+
48
+ // 发布 JSON 消息
49
+ client.send('topic/demo', { id: 1, method: 'test', params: {} });
50
+
51
+ // RPC 请求(回调方式)
52
+ client.req('topic/demo', 'getUser', { id: 1 }, (res, error) => {
53
+ if (error) {
54
+ console.error(error);
55
+ return;
56
+ }
57
+ console.log('响应:', res);
58
+ });
59
+
60
+ // RPC 请求(Promise 方式)
61
+ const res = await client.reqAsync('topic/demo', 'getUser', { id: 1 });
62
+ ```
63
+
64
+ ## API
65
+
66
+ ### 类 `MqttClient`
67
+
68
+ | 方法 | 说明 | 参数 | 返回值 |
69
+ |---|---|---|---|
70
+ | run | 连接 MQTT 服务器 | - | Promise |
71
+ | init | 重置配置与连接状态 | config | void |
72
+ | reconnect | 重连,超过重试次数后重新初始化 | - | void |
73
+ | end | 断开连接 | - | void |
74
+ | on | 监听底层客户端事件 | event_name, func | void |
75
+ | subscribe | 订阅主题 | topic, func, options | Number(订阅标识) |
76
+ | unsubscribe | 取消订阅 | topic, key | void |
77
+ | publish | 发布消息 | topic, message, options | void |
78
+ | send | 发送 JSON 消息 | topic, msg, options | void |
79
+ | req | 发起 RPC 请求 | topic, method, params, func, options | void |
80
+ | reqAsync | 发起 RPC 请求并等待响应 | topic, method, params, options | Promise |
81
+ | receive | 处理收到的消息(请求响应/方法调用/普通消息) | topic, body | Promise |
82
+ | message | 触发主题订阅回调 | topic, msg | void |
83
+ | getResTopic | 按模板生成响应主题 | topic | String |
84
+ | getOptions | 合并发布/订阅选项 | options, type | Object |
85
+ | getMessageId | 生成请求消息 ID | client_id, method | String |
86
+
87
+ ### 导出
88
+
89
+ | 导出 | 说明 | 参数 | 返回值 |
90
+ |---|---|---|---|
91
+ | MqttClient | MQTT 客户端类 | config | MqttClient |
92
+ | admin | 管理器实例 | - | Admin |
93
+ | mqttAdmin | 获取指定作用域的客户端实例 | scope, config | MqttClient |
94
+
95
+ ## 配置项
96
+
97
+ | 配置 | 类型 | 默认值 | 说明 |
98
+ |---|---|---|---|
99
+ | host | String | `127.0.0.1` | 主机地址 |
100
+ | port | String | `8083` | 端口号 |
101
+ | protocol | String | `ws` | 协议类型 |
102
+ | client_id | String | `service123` | 客户端 ID |
103
+ | username | String | `admin` | 用户名 |
104
+ | password | String | `asd123` | 密码 |
105
+ | clean | Boolean | `false` | 是否清除会话 |
106
+ | subscribe_topic | Array | `[]` | 订阅主题列表 |
107
+ | response_topic | String | `{topic}_ack` | 响应主题模板 |
108
+ | publish | Object | `{ qos: 0, retain: false }` | 发布选项 |
109
+ | subscribe | Object | `{ qos: 0 }` | 订阅选项 |
110
+ | timeout | Number | `3000` | 请求超时时间(毫秒) |
111
+ | retry | Number | `5` | 重试次数 |
112
+
113
+ ## 目录结构
114
+
115
+ ```text
116
+ mm_mqtt_client/
117
+ ├── lib/
118
+ │ └── mqtt_client.js # MqttClient 实现
119
+ ├── index.js # 模块入口
120
+ ├── test.js # 自包含测试(不连接外部 broker)
121
+ └── package.json
122
+ ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mm_mqtt_client",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "MQTT客户端模块,基于 mqtt.js 提供连接、订阅、发布与 RPC 请求能力(基于 mm_helper,无全局/原型扩展依赖)",
5
5
  "main": "index.js",
6
6
  "dependencies": {