///
///
/**
* MQTT连接配置接口
*/
export interface MqttConfig {
uuid: string;
/** MQTT协议,如 'mqtt' 或 'mqttws31' */
protocol: string;
/** MQTT服务器地址,如 'localhost' 或 '192.168.1.100' */
host: string;
/** MQTT服务器端口,标准MQTT端口为1883,MQTT over WebSocket为8083 */
port: number;
/** MQTT服务器端点,如 '/mqtt' */
endpoint: string;
/** 用户名,用于身份验证,如果服务器不需要认证则为可选 */
username?: string;
/** 密码,用于身份验证,如果服务器不需要认证则为可选 */
password?: string;
/** 保活时间(秒),客户端定期发送PING消息保持连接活跃,默认60秒 */
keepalive?: number;
/** 重连间隔(毫秒),连接断开后自动重连的时间间隔,0表示禁用自动重连,默认0 */
reconnectPeriod?: number;
/** 连接超时时间(毫秒),建立连接的最大等待时间,默认30000毫秒(30秒) */
connectTimeout?: number;
/** 是否清理会话,true表示每次连接都是新会话,false表示保持之前的订阅状态,默认true */
clean?: boolean;
/** 是否拒绝未授权的SSL/TLS连接,false表示接受自签名证书,默认false */
rejectUnauthorized?: boolean;
/** 主题 */
topic?: string;
/** QoS */
qos?: number;
}
/**
* MQTT事件回调接口
*/
export interface MqttCallbacks {
onConnect?: () => void;
onDisconnect?: () => void;
onMessage?: (topic: string, message: Buffer) => void;
onError?: (error: Error) => void;
onReconnect?: () => void;
onClose?: () => void;
}
/**
* MQTT连接状态枚举
*/
export declare enum MqttConnectionState {
DISCONNECTED = "disconnected",
CONNECTING = "connecting",
CONNECTED = "connected",
RECONNECTING = "reconnecting",
ERROR = "error"
}
/**
* MQTT连接工具类
*/
export declare class MqttClient {
private client;
private config;
private callbacks;
private connectionState;
private subscriptions;
constructor(config: MqttConfig, callbacks?: MqttCallbacks);
/**
* 连接到MQTT服务器
*/
connect(): Promise;
/**
* 断开MQTT连接
*/
disconnect(): void;
/**
* 订阅主题
*/
subscribe(topic: string, qos?: number, callback?: (topic: string, message: Buffer) => void): Promise;
/**
* 检查是否已连接
*/
isConnected(): boolean;
/**
* 获取连接状态
*/
getConnectionState(): MqttConnectionState;
/**
* 重新订阅之前的主题
*/
private resubscribeTopics;
}
/**
* 创建MQTT客户端实例的工厂函数
* 使用连接池确保相同配置只创建一次连接
*/
export declare function createMqttClient(config: MqttConfig, callbacks?: MqttCallbacks): Promise;
/**
* 创建MQTT客户端实例的同步工厂函数(不推荐,可能创建重复连接)
* @deprecated 建议使用异步的 createMqttClient
*/
export declare function createMqttClientSync(config: MqttConfig, callbacks?: MqttCallbacks): MqttClient;