@ptner/mqtt-trans 0.1.0
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.
- package/README.md +37 -0
- package/dist/index.d.ts +42 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +138 -0
- package/dist/index.js.map +1 -0
- package/package.json +38 -0
package/README.md
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# @ai-bus/mqtt-trans
|
|
2
|
+
|
|
3
|
+
基于 Aedes 的可嵌入 MQTT 服务端,一个 broker 同时服务原生 MQTT TCP 和 MQTT-over-WebSocket 客户端。
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
import { MqttTransServer } from "@ai-bus/mqtt-trans";
|
|
9
|
+
|
|
10
|
+
const server = new MqttTransServer({
|
|
11
|
+
mqtt: { host: "0.0.0.0", port: 1883 },
|
|
12
|
+
websocket: { host: "0.0.0.0", port: 8083, path: "/mqtt" },
|
|
13
|
+
broker: {
|
|
14
|
+
authenticate(client, username, password, done) {
|
|
15
|
+
done(null, username === "device" && password?.toString() === "secret");
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
const addresses = await server.start();
|
|
21
|
+
console.log(addresses);
|
|
22
|
+
|
|
23
|
+
await server.publish({
|
|
24
|
+
cmd: "publish",
|
|
25
|
+
topic: "devices/status",
|
|
26
|
+
payload: Buffer.from("online"),
|
|
27
|
+
qos: 0,
|
|
28
|
+
retain: false,
|
|
29
|
+
dup: false,
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
await server.close();
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
将 `mqtt` 或 `websocket` 设为 `false` 可以关闭对应监听器。端口设为 `0` 时由操作系统分配端口,实际地址由 `start()` 返回。
|
|
36
|
+
|
|
37
|
+
Aedes 1.1 实现 MQTT 3.1/3.1.1,不提供 MQTT 5 broker 功能。WebSocket 客户端应连接 `/mqtt` 并使用 `mqtt` 子协议。
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { type AddressInfo } from "node:net";
|
|
2
|
+
import { Aedes, type AedesOptions, type PublishPacket } from "aedes";
|
|
3
|
+
export interface MqttListenerOptions {
|
|
4
|
+
host?: string;
|
|
5
|
+
port?: number;
|
|
6
|
+
backlog?: number;
|
|
7
|
+
}
|
|
8
|
+
export interface MqttWebSocketListenerOptions {
|
|
9
|
+
host?: string;
|
|
10
|
+
port?: number;
|
|
11
|
+
path?: string;
|
|
12
|
+
maxPayload?: number;
|
|
13
|
+
}
|
|
14
|
+
export interface MqttTransServerOptions {
|
|
15
|
+
broker?: AedesOptions;
|
|
16
|
+
mqtt?: false | MqttListenerOptions;
|
|
17
|
+
websocket?: false | MqttWebSocketListenerOptions;
|
|
18
|
+
onError?: (error: Error) => void;
|
|
19
|
+
}
|
|
20
|
+
export interface MqttTransAddresses {
|
|
21
|
+
mqtt: AddressInfo | null;
|
|
22
|
+
websocket: AddressInfo | null;
|
|
23
|
+
}
|
|
24
|
+
export type AedesInstance = Aedes;
|
|
25
|
+
export declare class MqttTransServer {
|
|
26
|
+
readonly broker: AedesInstance;
|
|
27
|
+
private readonly options;
|
|
28
|
+
private mqttServer;
|
|
29
|
+
private websocketServer;
|
|
30
|
+
private addressesValue;
|
|
31
|
+
private startPromise;
|
|
32
|
+
private closePromise;
|
|
33
|
+
constructor(options?: MqttTransServerOptions);
|
|
34
|
+
get addresses(): MqttTransAddresses;
|
|
35
|
+
start(): Promise<MqttTransAddresses>;
|
|
36
|
+
publish(packet: PublishPacket): Promise<void>;
|
|
37
|
+
close(): Promise<void>;
|
|
38
|
+
private startInternal;
|
|
39
|
+
private closeInternal;
|
|
40
|
+
private reportError;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,WAAW,EAAe,MAAM,UAAU,CAAC;AACvE,OAAO,EACL,KAAK,EACL,KAAK,YAAY,EACjB,KAAK,aAAa,EACnB,MAAM,OAAO,CAAC;AAOf,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,4BAA4B;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,IAAI,CAAC,EAAE,KAAK,GAAG,mBAAmB,CAAC;IACnC,SAAS,CAAC,EAAE,KAAK,GAAG,4BAA4B,CAAC;IACjD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,WAAW,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC;AAElC,qBAAa,eAAe;IAC1B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,cAAc,CAAuD;IAC7E,OAAO,CAAC,YAAY,CAA0C;IAC9D,OAAO,CAAC,YAAY,CAA4B;gBAEpC,OAAO,GAAE,sBAA2B;IAKhD,IAAI,SAAS,IAAI,kBAAkB,CAElC;IAED,KAAK,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAMpC,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAM7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAKR,aAAa;YA4Cb,aAAa;IAe3B,OAAO,CAAC,WAAW;CAGpB"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { createServer } from "node:net";
|
|
2
|
+
import { Aedes, } from "aedes";
|
|
3
|
+
import { WebSocketServer, createWebSocketStream, } from "ws";
|
|
4
|
+
export class MqttTransServer {
|
|
5
|
+
broker;
|
|
6
|
+
options;
|
|
7
|
+
mqttServer;
|
|
8
|
+
websocketServer;
|
|
9
|
+
addressesValue = { mqtt: null, websocket: null };
|
|
10
|
+
startPromise;
|
|
11
|
+
closePromise;
|
|
12
|
+
constructor(options = {}) {
|
|
13
|
+
this.options = options;
|
|
14
|
+
this.broker = new Aedes(options.broker);
|
|
15
|
+
}
|
|
16
|
+
get addresses() {
|
|
17
|
+
return this.addressesValue;
|
|
18
|
+
}
|
|
19
|
+
start() {
|
|
20
|
+
if (this.closePromise)
|
|
21
|
+
throw new Error("Cannot start a closed MQTT server");
|
|
22
|
+
this.startPromise ??= this.startInternal();
|
|
23
|
+
return this.startPromise;
|
|
24
|
+
}
|
|
25
|
+
publish(packet) {
|
|
26
|
+
return new Promise((resolve, reject) => {
|
|
27
|
+
this.broker.publish(packet, (error) => error ? reject(error) : resolve());
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
close() {
|
|
31
|
+
this.closePromise ??= this.closeInternal();
|
|
32
|
+
return this.closePromise;
|
|
33
|
+
}
|
|
34
|
+
async startInternal() {
|
|
35
|
+
try {
|
|
36
|
+
await this.broker.listen();
|
|
37
|
+
if (this.options.mqtt !== false) {
|
|
38
|
+
const options = this.options.mqtt ?? {};
|
|
39
|
+
this.mqttServer = createServer((socket) => this.broker.handle(socket));
|
|
40
|
+
await listenTcp(this.mqttServer, options.port ?? 1883, options.host ?? "0.0.0.0", options.backlog);
|
|
41
|
+
this.mqttServer.on("error", (error) => this.reportError(error));
|
|
42
|
+
}
|
|
43
|
+
if (this.options.websocket !== false) {
|
|
44
|
+
const options = this.options.websocket ?? {};
|
|
45
|
+
const websocketServer = new WebSocketServer({
|
|
46
|
+
port: options.port ?? 8083,
|
|
47
|
+
host: options.host ?? "0.0.0.0",
|
|
48
|
+
path: options.path ?? "/mqtt",
|
|
49
|
+
maxPayload: options.maxPayload ?? 16 * 1024 * 1024,
|
|
50
|
+
handleProtocols: (protocols) => protocols.has("mqtt") ? "mqtt" : false,
|
|
51
|
+
});
|
|
52
|
+
this.websocketServer = websocketServer;
|
|
53
|
+
websocketServer.on("connection", (socket, request) => {
|
|
54
|
+
this.broker.handle(createWebSocketStream(socket), request);
|
|
55
|
+
});
|
|
56
|
+
await waitForWebSocketServer(websocketServer);
|
|
57
|
+
websocketServer.on("error", (error) => this.reportError(error));
|
|
58
|
+
}
|
|
59
|
+
this.addressesValue = {
|
|
60
|
+
mqtt: addressOf(this.mqttServer?.address()),
|
|
61
|
+
websocket: addressOf(this.websocketServer?.address()),
|
|
62
|
+
};
|
|
63
|
+
return this.addressesValue;
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
await this.closeInternal();
|
|
67
|
+
throw error;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
async closeInternal() {
|
|
71
|
+
for (const client of this.websocketServer?.clients ?? new Set()) {
|
|
72
|
+
client.terminate();
|
|
73
|
+
}
|
|
74
|
+
await Promise.all([
|
|
75
|
+
closeTcp(this.mqttServer),
|
|
76
|
+
closeWebSocket(this.websocketServer),
|
|
77
|
+
closeBroker(this.broker),
|
|
78
|
+
]);
|
|
79
|
+
this.mqttServer = undefined;
|
|
80
|
+
this.websocketServer = undefined;
|
|
81
|
+
this.addressesValue = { mqtt: null, websocket: null };
|
|
82
|
+
}
|
|
83
|
+
reportError(error) {
|
|
84
|
+
this.options.onError?.(error);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
function listenTcp(server, port, host, backlog) {
|
|
88
|
+
return new Promise((resolve, reject) => {
|
|
89
|
+
const onError = (error) => {
|
|
90
|
+
server.off("listening", onListening);
|
|
91
|
+
reject(error);
|
|
92
|
+
};
|
|
93
|
+
const onListening = () => {
|
|
94
|
+
server.off("error", onError);
|
|
95
|
+
resolve();
|
|
96
|
+
};
|
|
97
|
+
server.once("error", onError);
|
|
98
|
+
server.once("listening", onListening);
|
|
99
|
+
server.listen({ port, host, backlog });
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
function waitForWebSocketServer(server) {
|
|
103
|
+
return new Promise((resolve, reject) => {
|
|
104
|
+
const onError = (error) => {
|
|
105
|
+
server.off("listening", onListening);
|
|
106
|
+
reject(error);
|
|
107
|
+
};
|
|
108
|
+
const onListening = () => {
|
|
109
|
+
server.off("error", onError);
|
|
110
|
+
resolve();
|
|
111
|
+
};
|
|
112
|
+
server.once("error", onError);
|
|
113
|
+
server.once("listening", onListening);
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
function closeTcp(server) {
|
|
117
|
+
if (!server?.listening)
|
|
118
|
+
return Promise.resolve();
|
|
119
|
+
return new Promise((resolve, reject) => {
|
|
120
|
+
server.close((error) => error ? reject(error) : resolve());
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
function closeWebSocket(server) {
|
|
124
|
+
if (!server)
|
|
125
|
+
return Promise.resolve();
|
|
126
|
+
return new Promise((resolve, reject) => {
|
|
127
|
+
server.close((error) => error ? reject(error) : resolve());
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
function closeBroker(broker) {
|
|
131
|
+
if (broker.closed)
|
|
132
|
+
return Promise.resolve();
|
|
133
|
+
return new Promise((resolve) => broker.close(resolve));
|
|
134
|
+
}
|
|
135
|
+
function addressOf(address) {
|
|
136
|
+
return address && typeof address !== "string" ? address : null;
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ptner/mqtt-trans",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Embeddable MQTT and MQTT-over-WebSocket server",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"README.md"
|
|
17
|
+
],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "tsc -p tsconfig.json",
|
|
20
|
+
"test": "node --import tsx --test test/**/*.test.ts",
|
|
21
|
+
"check": "npm run build && npm test"
|
|
22
|
+
},
|
|
23
|
+
"engines": {
|
|
24
|
+
"node": ">=20"
|
|
25
|
+
},
|
|
26
|
+
"dependencies": {
|
|
27
|
+
"aedes": "^1.1.1",
|
|
28
|
+
"ws": "^8.18.0"
|
|
29
|
+
},
|
|
30
|
+
"devDependencies": {
|
|
31
|
+
"@types/node": "^22.0.0",
|
|
32
|
+
"@types/ws": "^8.5.0",
|
|
33
|
+
"mqtt": "^5.10.0",
|
|
34
|
+
"tsx": "^4.19.0",
|
|
35
|
+
"typescript": "^5.7.0"
|
|
36
|
+
},
|
|
37
|
+
"license": "MIT"
|
|
38
|
+
}
|