Add quality of service option to subscriptions

Fixes #323, #14, #334
Fixes #132
This commit is contained in:
Thomas Nordquist
2020-04-20 12:18:24 +02:00
parent e87a7115c5
commit b72fc48bdb
19 changed files with 904 additions and 215 deletions

View File

@@ -12,12 +12,19 @@ export interface MqttOptions {
tls: boolean
certValidation: boolean
clientId?: string
subscriptions: Array<string>
subscriptions: Array<Subscription>
certificateAuthority?: string
clientCertificate?: string
clientKey?: string
}
export interface Subscription {
topic: string
qos: QoS
}
export type QoS = 0 | 1 | 2
export class MqttSource implements DataSource<MqttOptions> {
public stateMachine: DataSourceStateMachine = new DataSourceStateMachine()
private client: Client | undefined
@@ -74,7 +81,7 @@ export class MqttSource implements DataSource<MqttOptions> {
client.on('connect', () => {
this.stateMachine.setConnected(true)
options.subscriptions.forEach(subscription => {
client.subscribe(subscription, (err: Error) => {
client.subscribe(subscription.topic, { qos: subscription.qos }, (err: Error) => {
if (err) {
this.stateMachine.setError(err)
}