70 lines
1.7 KiB
TypeScript

import { connect, MqttClient, OnErrorCallback, OnMessageCallback } from 'mqtt';
import { IMqttClient } from './interface';
export class RealMqttClient implements IMqttClient {
private client: MqttClient;
constructor() {
this.client = {} as MqttClient; // gets initialized in connect()
}
connect(
url: string,
options: {
port: number;
username: string;
password: string;
protocolVersion: 4;
},
): void {
this.client = connect(url, options);
}
subscribe(
topicObject: string,
opts?: { qos: 0 | 1 | 2 },
callback?: (err: Error | null) => void,
): void;
subscribe(topic: string, opts?: any, callback?: any): void {
if (opts) {
this.client.subscribe(topic, opts, callback);
} else {
this.client.subscribe(topic);
}
}
publish(
topic: string,
value: string,
options: {
retain?: boolean;
qos: 0 | 1 | 2;
},
): void {
this.client.publish(topic, value, options);
}
on(event: 'message', handler: OnMessageCallback): void;
on(event: 'error', handler: OnErrorCallback): void;
on(event: any, handler: any): void {
this.client.on(event, handler);
}
off(event: 'message', handler: OnMessageCallback): void;
off(event: 'error', handler: OnErrorCallback): void;
off(event: any, handler: any): void {
this.client.off(event, handler);
}
removeListener(event: 'message', handler: OnMessageCallback): void {
this.client.removeListener(event, handler);
}
once(event: 'connect', handler: () => void): void;
once(event: 'error', handler: OnErrorCallback): void;
once(event: 'disconnect', handler: () => void): void;
once(event: any, handler: any): void {
this.client.once(event, handler);
}
}