@lynker-desktop/electron-ipc
Version:
electron-ipc
123 lines • 4.85 kB
TypeScript
export declare let isInitialized: boolean;
/**
* 主进程 IPC 通信类
* 负责处理主进程与渲染进程之间的消息通信
* 使用单例模式确保全局唯一实例
*
* 修复说明:
* - 为每个请求生成唯一的 requestId,解决并发请求数据错乱问题
* - 确保请求和响应能够正确匹配,避免多个并发请求互相干扰
*/
declare class MainIPC {
static instance: MainIPC;
private eventEmitter;
constructor();
/**
* 发送给主进程消息
* 使用唯一的 requestId 确保并发请求不会互相干扰
*
* @param channel 消息通道名称
* @param args 传递给处理器的参数
* @returns Promise<any> 返回处理结果
*
* 修复说明:
* - 为每个请求生成唯一的 requestId
* - 监听 `${channel}-reply-${requestId}` 事件,确保只接收对应请求的回复
* - 发送请求时包含 requestId,让处理器知道如何回复
*/
invokeMain(channel: string, ...args: any[]): Promise<any>;
/**
* 处理主进程发送过来的消息
* 持续监听指定通道的消息
*
* @param channel 消息通道名称
* @param handler 处理函数,接收除 requestId 外的所有参数
*
* 修复说明:
* - 接收 requestId 作为第一个参数
* - 使用 `${channel}-reply-${requestId}` 发送回复,确保回复给正确的请求
* - 支持多个并发请求,每个请求都有独立的回复通道
*/
handleMain(channel: string, handler: (...args: any[]) => Promise<any>): {
cancel: () => void;
};
/**
* 发送给渲染进程消息
* 使用唯一的 requestId 确保并发请求不会互相干扰
*
* @param webContents 目标渲染进程的 WebContents 对象
* @param channel 消息通道名称
* @param args 传递给渲染进程的参数
* @returns Promise<any> 返回渲染进程的处理结果
*
* 修复说明:
* - 为每个请求生成唯一的 requestId
* - 监听 `${channel}-reply-${requestId}` 事件,确保只接收对应请求的回复
* - 发送请求时包含 requestId,让渲染进程知道如何回复
* - 等待渲染进程加载完成后再发送消息,确保消息能够被正确接收
*/
invokeRenderer(webContents: Electron.WebContents, channel: string, ...args: any[]): Promise<any>;
/**
* 发送给所有渲染进程消息
* 向所有渲染进程发送消息并收集所有响应
*
* @param channel 消息通道名称
* @param args 传递给所有渲染进程的参数
* @returns Promise<any[]> 返回所有渲染进程的处理结果数组
*
* 修复说明:
* - 为每个请求生成唯一的 requestId
* - 收集所有渲染进程的响应,当所有响应都收到时才 resolve
* - 使用 `${channel}-reply-${requestId}` 确保只接收对应请求的回复
* - 如果没有渲染进程,直接返回空数组
* - 等待每个渲染进程加载完成后再发送消息
*/
invokeAllRenderer(channel: string, ...args: any[]): Promise<any>;
/**
* 处理渲染进程发送过来的消息
* 持续监听指定通道的消息,支持超时处理
*
* @param channel 消息通道名称
* @param handler 处理函数,接收除 requestId 外的所有参数
*
* 修复说明:
* - 接收 requestId 作为第一个参数
* - 使用 ipcMain.handle 替代 ipcMain.on,提供更好的错误处理
* - 支持 8 秒超时机制,避免长时间等待
* - 支持并发请求,每个请求都有独立的处理流程
* - 提供详细的错误日志记录
*/
handleRenderer(channel: string, handler: (...args: any[]) => Promise<any>): {
cancel: () => void;
};
/**
* 初始化消息中继功能
* 设置消息转发和回复机制,支持跨渲染进程通信
*
* 功能说明:
* - relay-message: 转发消息到指定的渲染进程或所有渲染进程
* - relay-reply: 处理回复消息,广播给所有渲染进程
* - __GetCurrentWebContentId__: 获取当前 WebContent ID
* - __OpenCurrentWebContentDevTools__: 打开当前 WebContent 的开发者工具
*/
relayMessage(): void;
}
/**
* 全局 MainIPC 实例
* 使用全局变量确保单例模式,避免重复创建实例
*/
export declare const mainIPC: MainIPC;
/**
* 初始化 IPC 通信系统
* 设置消息中继功能,确保跨进程通信正常工作
*
* @returns MainIPC 实例
*
* 功能说明:
* - 检查是否已经初始化,避免重复初始化
* - 设置消息中继功能,支持跨渲染进程通信
* - 返回全局 MainIPC 实例
*/
export declare const initialize: () => any;
export {};
//# sourceMappingURL=index.d.ts.map