/// /// /** * 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;