Add quality of service option to subscriptions
Fixes #323, #14, #334 Fixes #132
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user