mqtt5-wasm 1.1.0 → 1.2.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 +27 -1
- package/mqtt5_wasm.d.ts +15 -11
- package/mqtt5_wasm.js +35 -24
- package/mqtt5_wasm_bg.wasm +0 -0
- package/mqtt5_wasm_bg.wasm.d.ts +13 -11
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -17,6 +17,7 @@ MQTT v5.0 and v3.1.1 WebAssembly client and broker for browser environments.
|
|
|
17
17
|
- **Broker lifecycle events** - Monitor client connections, publishes, and subscriptions
|
|
18
18
|
- **Automatic keepalive** - Connection health monitoring with timeout detection
|
|
19
19
|
- **Will messages** - Last Will and Testament (LWT) support
|
|
20
|
+
- **Load balancer redirect** - Server redirect via CONNACK UseAnotherServer for horizontal scaling
|
|
20
21
|
|
|
21
22
|
## Installation
|
|
22
23
|
|
|
@@ -30,7 +31,7 @@ npm install mqtt5-wasm
|
|
|
30
31
|
|
|
31
32
|
```toml
|
|
32
33
|
[dependencies]
|
|
33
|
-
mqtt5-wasm = "1.
|
|
34
|
+
mqtt5-wasm = "1.2"
|
|
34
35
|
```
|
|
35
36
|
|
|
36
37
|
Build with wasm-bindgen:
|
|
@@ -141,6 +142,31 @@ broker.onMessageDelivered((event) => {
|
|
|
141
142
|
});
|
|
142
143
|
```
|
|
143
144
|
|
|
145
|
+
### Load Balancer Redirect
|
|
146
|
+
|
|
147
|
+
```javascript
|
|
148
|
+
import init, { Broker, BrokerConfig, MqttClient } from "mqtt5-wasm";
|
|
149
|
+
|
|
150
|
+
await init();
|
|
151
|
+
|
|
152
|
+
const lbConfig = new BrokerConfig();
|
|
153
|
+
lbConfig.allowAnonymous = true;
|
|
154
|
+
lbConfig.addLoadBalancerBackend("broker-a");
|
|
155
|
+
lbConfig.addLoadBalancerBackend("broker-b");
|
|
156
|
+
const lb = Broker.withConfig(lbConfig);
|
|
157
|
+
|
|
158
|
+
const client = new MqttClient("my-client");
|
|
159
|
+
const port = lb.createClientPort();
|
|
160
|
+
|
|
161
|
+
try {
|
|
162
|
+
await client.connectMessagePort(port);
|
|
163
|
+
} catch (err) {
|
|
164
|
+
if (err.type === "redirect") {
|
|
165
|
+
console.log(`Redirected to ${err.url}`);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
```
|
|
169
|
+
|
|
144
170
|
## Documentation
|
|
145
171
|
|
|
146
172
|
See the [main repository](https://github.com/LabOverWire/mqtt-lib) for complete documentation and examples.
|
package/mqtt5_wasm.d.ts
CHANGED
|
@@ -137,7 +137,9 @@ export class BrokerConfig {
|
|
|
137
137
|
free(): void;
|
|
138
138
|
[Symbol.dispose](): void;
|
|
139
139
|
addChangeOnlyDeliveryPattern(pattern: string): void;
|
|
140
|
+
addLoadBalancerBackend(backend: string): void;
|
|
140
141
|
clearChangeOnlyDeliveryPatterns(): void;
|
|
142
|
+
clearLoadBalancerBackends(): void;
|
|
141
143
|
constructor();
|
|
142
144
|
set allowAnonymous(value: boolean);
|
|
143
145
|
set changeOnlyDeliveryEnabled(value: boolean);
|
|
@@ -481,7 +483,9 @@ export interface InitOutput {
|
|
|
481
483
|
readonly broker_userCount: (a: number) => number;
|
|
482
484
|
readonly broker_withConfig: (a: number, b: number) => void;
|
|
483
485
|
readonly brokerconfig_addChangeOnlyDeliveryPattern: (a: number, b: number, c: number) => void;
|
|
486
|
+
readonly brokerconfig_addLoadBalancerBackend: (a: number, b: number, c: number) => void;
|
|
484
487
|
readonly brokerconfig_clearChangeOnlyDeliveryPatterns: (a: number) => void;
|
|
488
|
+
readonly brokerconfig_clearLoadBalancerBackends: (a: number) => void;
|
|
485
489
|
readonly brokerconfig_new: () => number;
|
|
486
490
|
readonly brokerconfig_set_allowAnonymous: (a: number, b: number) => void;
|
|
487
491
|
readonly brokerconfig_set_changeOnlyDeliveryEnabled: (a: number, b: number) => void;
|
|
@@ -640,22 +644,22 @@ export interface InitOutput {
|
|
|
640
644
|
readonly willmessage_topic: (a: number, b: number) => void;
|
|
641
645
|
readonly willmessage_willDelayInterval: (a: number) => number;
|
|
642
646
|
readonly createCodecRegistry: () => number;
|
|
647
|
+
readonly gzipcodec_withLevel: (a: number, b: number) => number;
|
|
643
648
|
readonly gzipcodec_new: () => number;
|
|
644
649
|
readonly createGzipCodec: (a: number, b: number) => number;
|
|
650
|
+
readonly __wbg_gzipcodec_free: (a: number, b: number) => void;
|
|
645
651
|
readonly gzipcodec_withMinSize: (a: number, b: number) => number;
|
|
646
652
|
readonly gzipcodec_withMaxDecompressedSize: (a: number, b: number) => number;
|
|
647
|
-
readonly
|
|
648
|
-
readonly
|
|
649
|
-
readonly
|
|
650
|
-
readonly __wasm_bindgen_func_elem_2766: (a: number, b: number) => void;
|
|
651
|
-
readonly __wasm_bindgen_func_elem_184: (a: number, b: number) => void;
|
|
652
|
-
readonly __wasm_bindgen_func_elem_4228: (a: number, b: number, c: number, d: number) => void;
|
|
653
|
+
readonly __wasm_bindgen_func_elem_2610: (a: number, b: number) => void;
|
|
654
|
+
readonly __wasm_bindgen_func_elem_2770: (a: number, b: number) => void;
|
|
655
|
+
readonly __wasm_bindgen_func_elem_183: (a: number, b: number) => void;
|
|
653
656
|
readonly __wasm_bindgen_func_elem_4240: (a: number, b: number, c: number, d: number) => void;
|
|
654
|
-
readonly
|
|
655
|
-
readonly
|
|
656
|
-
readonly
|
|
657
|
-
readonly
|
|
658
|
-
readonly
|
|
657
|
+
readonly __wasm_bindgen_func_elem_4252: (a: number, b: number, c: number, d: number) => void;
|
|
658
|
+
readonly __wasm_bindgen_func_elem_1047: (a: number, b: number, c: number) => void;
|
|
659
|
+
readonly __wasm_bindgen_func_elem_1047_3: (a: number, b: number, c: number) => void;
|
|
660
|
+
readonly __wasm_bindgen_func_elem_1047_4: (a: number, b: number, c: number) => void;
|
|
661
|
+
readonly __wasm_bindgen_func_elem_1047_5: (a: number, b: number, c: number) => void;
|
|
662
|
+
readonly __wasm_bindgen_func_elem_2630: (a: number, b: number) => void;
|
|
659
663
|
readonly __wbindgen_export: (a: number, b: number) => number;
|
|
660
664
|
readonly __wbindgen_export2: (a: number, b: number, c: number, d: number) => number;
|
|
661
665
|
readonly __wbindgen_export3: (a: number) => void;
|
package/mqtt5_wasm.js
CHANGED
|
@@ -621,9 +621,20 @@ export class BrokerConfig {
|
|
|
621
621
|
const len0 = WASM_VECTOR_LEN;
|
|
622
622
|
wasm.brokerconfig_addChangeOnlyDeliveryPattern(this.__wbg_ptr, ptr0, len0);
|
|
623
623
|
}
|
|
624
|
+
/**
|
|
625
|
+
* @param {string} backend
|
|
626
|
+
*/
|
|
627
|
+
addLoadBalancerBackend(backend) {
|
|
628
|
+
const ptr0 = passStringToWasm0(backend, wasm.__wbindgen_export, wasm.__wbindgen_export2);
|
|
629
|
+
const len0 = WASM_VECTOR_LEN;
|
|
630
|
+
wasm.brokerconfig_addLoadBalancerBackend(this.__wbg_ptr, ptr0, len0);
|
|
631
|
+
}
|
|
624
632
|
clearChangeOnlyDeliveryPatterns() {
|
|
625
633
|
wasm.brokerconfig_clearChangeOnlyDeliveryPatterns(this.__wbg_ptr);
|
|
626
634
|
}
|
|
635
|
+
clearLoadBalancerBackends() {
|
|
636
|
+
wasm.brokerconfig_clearLoadBalancerBackends(this.__wbg_ptr);
|
|
637
|
+
}
|
|
627
638
|
constructor() {
|
|
628
639
|
const ret = wasm.brokerconfig_new();
|
|
629
640
|
this.__wbg_ptr = ret >>> 0;
|
|
@@ -2365,7 +2376,7 @@ function __wbg_get_imports() {
|
|
|
2365
2376
|
const a = state0.a;
|
|
2366
2377
|
state0.a = 0;
|
|
2367
2378
|
try {
|
|
2368
|
-
return
|
|
2379
|
+
return __wasm_bindgen_func_elem_4252(a, state0.b, arg0, arg1);
|
|
2369
2380
|
} finally {
|
|
2370
2381
|
state0.a = a;
|
|
2371
2382
|
}
|
|
@@ -2395,7 +2406,7 @@ function __wbg_get_imports() {
|
|
|
2395
2406
|
const a = state0.a;
|
|
2396
2407
|
state0.a = 0;
|
|
2397
2408
|
try {
|
|
2398
|
-
return
|
|
2409
|
+
return __wasm_bindgen_func_elem_4252(a, state0.b, arg0, arg1);
|
|
2399
2410
|
} finally {
|
|
2400
2411
|
state0.a = a;
|
|
2401
2412
|
}
|
|
@@ -2472,7 +2483,7 @@ function __wbg_get_imports() {
|
|
|
2472
2483
|
__wbg_send_d31a693c975dea74: function() { return handleError(function (arg0, arg1, arg2) {
|
|
2473
2484
|
getObject(arg0).send(getArrayU8FromWasm0(arg1, arg2));
|
|
2474
2485
|
}, arguments); },
|
|
2475
|
-
|
|
2486
|
+
__wbg_setTimeout_28af72ed644fd498: function(arg0, arg1) {
|
|
2476
2487
|
const ret = setTimeout(getObject(arg0), arg1);
|
|
2477
2488
|
return ret;
|
|
2478
2489
|
},
|
|
@@ -2547,32 +2558,32 @@ function __wbg_get_imports() {
|
|
|
2547
2558
|
},
|
|
2548
2559
|
__wbindgen_cast_0000000000000001: function(arg0, arg1) {
|
|
2549
2560
|
// Cast intrinsic for `Closure(Closure { dtor_idx: 425, function: Function { arguments: [], shim_idx: 426, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
|
|
2550
|
-
const ret = makeMutClosure(arg0, arg1, wasm.
|
|
2561
|
+
const ret = makeMutClosure(arg0, arg1, wasm.__wasm_bindgen_func_elem_2610, __wasm_bindgen_func_elem_2630);
|
|
2551
2562
|
return addHeapObject(ret);
|
|
2552
2563
|
},
|
|
2553
2564
|
__wbindgen_cast_0000000000000002: function(arg0, arg1) {
|
|
2554
|
-
// Cast intrinsic for `Closure(Closure { dtor_idx:
|
|
2555
|
-
const ret = makeMutClosure(arg0, arg1, wasm.
|
|
2565
|
+
// Cast intrinsic for `Closure(Closure { dtor_idx: 443, function: Function { arguments: [Externref], shim_idx: 607, ret: Result(Unit), inner_ret: Some(Result(Unit)) }, mutable: true }) -> Externref`.
|
|
2566
|
+
const ret = makeMutClosure(arg0, arg1, wasm.__wasm_bindgen_func_elem_2770, __wasm_bindgen_func_elem_4240);
|
|
2556
2567
|
return addHeapObject(ret);
|
|
2557
2568
|
},
|
|
2558
2569
|
__wbindgen_cast_0000000000000003: function(arg0, arg1) {
|
|
2559
2570
|
// Cast intrinsic for `Closure(Closure { dtor_idx: 9, function: Function { arguments: [Externref], shim_idx: 10, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
|
|
2560
|
-
const ret = makeMutClosure(arg0, arg1, wasm.
|
|
2571
|
+
const ret = makeMutClosure(arg0, arg1, wasm.__wasm_bindgen_func_elem_183, __wasm_bindgen_func_elem_1047);
|
|
2561
2572
|
return addHeapObject(ret);
|
|
2562
2573
|
},
|
|
2563
2574
|
__wbindgen_cast_0000000000000004: function(arg0, arg1) {
|
|
2564
2575
|
// Cast intrinsic for `Closure(Closure { dtor_idx: 9, function: Function { arguments: [NamedExternref("CloseEvent")], shim_idx: 10, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
|
|
2565
|
-
const ret = makeMutClosure(arg0, arg1, wasm.
|
|
2576
|
+
const ret = makeMutClosure(arg0, arg1, wasm.__wasm_bindgen_func_elem_183, __wasm_bindgen_func_elem_1047_3);
|
|
2566
2577
|
return addHeapObject(ret);
|
|
2567
2578
|
},
|
|
2568
2579
|
__wbindgen_cast_0000000000000005: function(arg0, arg1) {
|
|
2569
2580
|
// Cast intrinsic for `Closure(Closure { dtor_idx: 9, function: Function { arguments: [NamedExternref("ErrorEvent")], shim_idx: 10, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
|
|
2570
|
-
const ret = makeMutClosure(arg0, arg1, wasm.
|
|
2581
|
+
const ret = makeMutClosure(arg0, arg1, wasm.__wasm_bindgen_func_elem_183, __wasm_bindgen_func_elem_1047_4);
|
|
2571
2582
|
return addHeapObject(ret);
|
|
2572
2583
|
},
|
|
2573
2584
|
__wbindgen_cast_0000000000000006: function(arg0, arg1) {
|
|
2574
2585
|
// Cast intrinsic for `Closure(Closure { dtor_idx: 9, function: Function { arguments: [NamedExternref("MessageEvent")], shim_idx: 10, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
|
|
2575
|
-
const ret = makeMutClosure(arg0, arg1, wasm.
|
|
2586
|
+
const ret = makeMutClosure(arg0, arg1, wasm.__wasm_bindgen_func_elem_183, __wasm_bindgen_func_elem_1047_5);
|
|
2576
2587
|
return addHeapObject(ret);
|
|
2577
2588
|
},
|
|
2578
2589
|
__wbindgen_cast_0000000000000007: function(arg0) {
|
|
@@ -2606,30 +2617,30 @@ function __wbg_get_imports() {
|
|
|
2606
2617
|
};
|
|
2607
2618
|
}
|
|
2608
2619
|
|
|
2609
|
-
function
|
|
2610
|
-
wasm.
|
|
2620
|
+
function __wasm_bindgen_func_elem_2630(arg0, arg1) {
|
|
2621
|
+
wasm.__wasm_bindgen_func_elem_2630(arg0, arg1);
|
|
2611
2622
|
}
|
|
2612
2623
|
|
|
2613
|
-
function
|
|
2614
|
-
wasm.
|
|
2624
|
+
function __wasm_bindgen_func_elem_1047(arg0, arg1, arg2) {
|
|
2625
|
+
wasm.__wasm_bindgen_func_elem_1047(arg0, arg1, addHeapObject(arg2));
|
|
2615
2626
|
}
|
|
2616
2627
|
|
|
2617
|
-
function
|
|
2618
|
-
wasm.
|
|
2628
|
+
function __wasm_bindgen_func_elem_1047_3(arg0, arg1, arg2) {
|
|
2629
|
+
wasm.__wasm_bindgen_func_elem_1047_3(arg0, arg1, addHeapObject(arg2));
|
|
2619
2630
|
}
|
|
2620
2631
|
|
|
2621
|
-
function
|
|
2622
|
-
wasm.
|
|
2632
|
+
function __wasm_bindgen_func_elem_1047_4(arg0, arg1, arg2) {
|
|
2633
|
+
wasm.__wasm_bindgen_func_elem_1047_4(arg0, arg1, addHeapObject(arg2));
|
|
2623
2634
|
}
|
|
2624
2635
|
|
|
2625
|
-
function
|
|
2626
|
-
wasm.
|
|
2636
|
+
function __wasm_bindgen_func_elem_1047_5(arg0, arg1, arg2) {
|
|
2637
|
+
wasm.__wasm_bindgen_func_elem_1047_5(arg0, arg1, addHeapObject(arg2));
|
|
2627
2638
|
}
|
|
2628
2639
|
|
|
2629
|
-
function
|
|
2640
|
+
function __wasm_bindgen_func_elem_4240(arg0, arg1, arg2) {
|
|
2630
2641
|
try {
|
|
2631
2642
|
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
|
2632
|
-
wasm.
|
|
2643
|
+
wasm.__wasm_bindgen_func_elem_4240(retptr, arg0, arg1, addHeapObject(arg2));
|
|
2633
2644
|
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
2634
2645
|
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
2635
2646
|
if (r1) {
|
|
@@ -2640,8 +2651,8 @@ function __wasm_bindgen_func_elem_4228(arg0, arg1, arg2) {
|
|
|
2640
2651
|
}
|
|
2641
2652
|
}
|
|
2642
2653
|
|
|
2643
|
-
function
|
|
2644
|
-
wasm.
|
|
2654
|
+
function __wasm_bindgen_func_elem_4252(arg0, arg1, arg2, arg3) {
|
|
2655
|
+
wasm.__wasm_bindgen_func_elem_4252(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));
|
|
2645
2656
|
}
|
|
2646
2657
|
|
|
2647
2658
|
|
package/mqtt5_wasm_bg.wasm
CHANGED
|
Binary file
|
package/mqtt5_wasm_bg.wasm.d.ts
CHANGED
|
@@ -68,7 +68,9 @@ export const broker_updateConfig: (a: number, b: number, c: number) => void;
|
|
|
68
68
|
export const broker_userCount: (a: number) => number;
|
|
69
69
|
export const broker_withConfig: (a: number, b: number) => void;
|
|
70
70
|
export const brokerconfig_addChangeOnlyDeliveryPattern: (a: number, b: number, c: number) => void;
|
|
71
|
+
export const brokerconfig_addLoadBalancerBackend: (a: number, b: number, c: number) => void;
|
|
71
72
|
export const brokerconfig_clearChangeOnlyDeliveryPatterns: (a: number) => void;
|
|
73
|
+
export const brokerconfig_clearLoadBalancerBackends: (a: number) => void;
|
|
72
74
|
export const brokerconfig_new: () => number;
|
|
73
75
|
export const brokerconfig_set_allowAnonymous: (a: number, b: number) => void;
|
|
74
76
|
export const brokerconfig_set_changeOnlyDeliveryEnabled: (a: number, b: number) => void;
|
|
@@ -227,22 +229,22 @@ export const willmessage_set_willDelayInterval: (a: number, b: number) => void;
|
|
|
227
229
|
export const willmessage_topic: (a: number, b: number) => void;
|
|
228
230
|
export const willmessage_willDelayInterval: (a: number) => number;
|
|
229
231
|
export const createCodecRegistry: () => number;
|
|
232
|
+
export const gzipcodec_withLevel: (a: number, b: number) => number;
|
|
230
233
|
export const gzipcodec_new: () => number;
|
|
231
234
|
export const createGzipCodec: (a: number, b: number) => number;
|
|
235
|
+
export const __wbg_gzipcodec_free: (a: number, b: number) => void;
|
|
232
236
|
export const gzipcodec_withMinSize: (a: number, b: number) => number;
|
|
233
237
|
export const gzipcodec_withMaxDecompressedSize: (a: number, b: number) => number;
|
|
234
|
-
export const
|
|
235
|
-
export const
|
|
236
|
-
export const
|
|
237
|
-
export const __wasm_bindgen_func_elem_2766: (a: number, b: number) => void;
|
|
238
|
-
export const __wasm_bindgen_func_elem_184: (a: number, b: number) => void;
|
|
239
|
-
export const __wasm_bindgen_func_elem_4228: (a: number, b: number, c: number, d: number) => void;
|
|
238
|
+
export const __wasm_bindgen_func_elem_2610: (a: number, b: number) => void;
|
|
239
|
+
export const __wasm_bindgen_func_elem_2770: (a: number, b: number) => void;
|
|
240
|
+
export const __wasm_bindgen_func_elem_183: (a: number, b: number) => void;
|
|
240
241
|
export const __wasm_bindgen_func_elem_4240: (a: number, b: number, c: number, d: number) => void;
|
|
241
|
-
export const
|
|
242
|
-
export const
|
|
243
|
-
export const
|
|
244
|
-
export const
|
|
245
|
-
export const
|
|
242
|
+
export const __wasm_bindgen_func_elem_4252: (a: number, b: number, c: number, d: number) => void;
|
|
243
|
+
export const __wasm_bindgen_func_elem_1047: (a: number, b: number, c: number) => void;
|
|
244
|
+
export const __wasm_bindgen_func_elem_1047_3: (a: number, b: number, c: number) => void;
|
|
245
|
+
export const __wasm_bindgen_func_elem_1047_4: (a: number, b: number, c: number) => void;
|
|
246
|
+
export const __wasm_bindgen_func_elem_1047_5: (a: number, b: number, c: number) => void;
|
|
247
|
+
export const __wasm_bindgen_func_elem_2630: (a: number, b: number) => void;
|
|
246
248
|
export const __wbindgen_export: (a: number, b: number) => number;
|
|
247
249
|
export const __wbindgen_export2: (a: number, b: number, c: number, d: number) => number;
|
|
248
250
|
export const __wbindgen_export3: (a: number) => void;
|