115 lines
2.9 KiB
TypeScript
115 lines
2.9 KiB
TypeScript
/**
|
||
* 公共 MQTT 类型定义
|
||
* 供 renderer 与 main 进程共享,避免在多个模块中重复定义 JSDoc @typedef
|
||
*/
|
||
|
||
/** MQTT QoS 等级 */
|
||
export type MqttQoS = 0 | 1 | 2;
|
||
|
||
/** MQTT 服务器连接状态 */
|
||
export type MqttServerStatus = 'disconnected' | 'connecting' | 'connected' | 'error';
|
||
|
||
/** MQTT 主题 */
|
||
export interface MqttTopic {
|
||
/** 主题唯一标识 */
|
||
id: string;
|
||
/** 主题名称(支持通配符) */
|
||
topic: string;
|
||
/** 订阅 QoS 等级 */
|
||
qos: MqttQoS;
|
||
/** 当前是否已订阅 */
|
||
subscribed: boolean;
|
||
}
|
||
|
||
/** 主题配置(用于导入/导出或表单) */
|
||
export interface TopicConfig {
|
||
/** 主题唯一标识,未提供时由后端生成 */
|
||
id?: string;
|
||
/** 主题名称(支持通配符) */
|
||
topic: string;
|
||
/** 订阅 QoS 等级,默认 1 */
|
||
qos?: MqttQoS;
|
||
}
|
||
|
||
/** MQTT 服务器配置(不含运行时状态) */
|
||
export interface ServerConfig {
|
||
/** 显示名称 */
|
||
name: string;
|
||
/** 主机地址 */
|
||
host: string;
|
||
/** 端口号,默认 1883 */
|
||
port?: number;
|
||
/** 连接协议,默认 'mqtt' */
|
||
protocol?: 'mqtt' | 'mqtts' | 'ws' | 'wss';
|
||
/** 客户端 ID,默认随机生成 */
|
||
clientId?: string;
|
||
/** 用户名,默认空字符串 */
|
||
username?: string;
|
||
/** 密码,默认空字符串 */
|
||
password?: string;
|
||
/** 心跳间隔(秒),默认 60 */
|
||
keepAlive?: number;
|
||
/** 是否清理会话,默认 true */
|
||
cleanSession?: boolean;
|
||
/** 连接超时(毫秒),默认 10000 */
|
||
connectTimeout?: number;
|
||
/** 是否自动重连,默认 true */
|
||
reconnect?: boolean;
|
||
/** 重连间隔(毫秒),默认 5000 */
|
||
reconnectInterval?: number;
|
||
/** 初始主题列表 */
|
||
topics?: TopicConfig[];
|
||
}
|
||
|
||
/** MQTT 服务器运行时对象 */
|
||
export interface MqttServer extends ServerConfig {
|
||
/** 服务器唯一标识 */
|
||
id: string;
|
||
/** 当前连接状态 */
|
||
status: MqttServerStatus;
|
||
/** 该服务器下的主题列表 */
|
||
topics: MqttTopic[];
|
||
}
|
||
|
||
/** 发布/订阅选项 */
|
||
export interface PublishOptions {
|
||
/** QoS 等级,默认 1 */
|
||
qos?: MqttQoS;
|
||
/** 是否保留消息,默认 false */
|
||
retain?: boolean;
|
||
}
|
||
|
||
/** MQTT 消息(订阅接收或本地发布) */
|
||
export interface MqttMessage {
|
||
/** 消息唯一标识 */
|
||
id: string;
|
||
/** 接收/发送时间(格式为 HH:mm:ss.SSS) */
|
||
time: string;
|
||
/** 消息主题 */
|
||
topic: string;
|
||
/** 消息负载内容 */
|
||
payload: string;
|
||
/** 消息 QoS 等级 */
|
||
qos: MqttQoS;
|
||
/** 是否为保留消息 */
|
||
retain: boolean;
|
||
/** 消息方向:pub 表示发布,sub 表示订阅 */
|
||
direction: 'pub' | 'sub';
|
||
}
|
||
|
||
/** 发布历史记录 */
|
||
export interface PublishRecord {
|
||
/** 发布时间(格式为 HH:mm:ss.SSS) */
|
||
time: string;
|
||
/** 目标主题 */
|
||
topic: string;
|
||
/** 发布内容 */
|
||
payload: string;
|
||
/** 发布 QoS 等级 */
|
||
qos: MqttQoS;
|
||
/** 是否保留消息 */
|
||
retain: boolean;
|
||
/** 固定为 pub */
|
||
direction: 'pub';
|
||
}
|