Files
pqs-9100_client/frontend/src/utils/ipcRenderer.ts

119 lines
3.5 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* Electron IPC Renderer 类型定义
*/
interface IpcRenderer {
/**
* 发送异步消息invoke/handle 模型)
* @param channel 通道名称
* @param param 传递的参数
* @returns Promise<T> 返回结果
*/
invoke<T = any>(channel: string, param?: any): Promise<T>;
/**
* 发送同步消息send/on 模型)
* @param channel 通道名称
* @param param 传递的参数
* @returns 返回结果
*/
sendSync(channel: string, param?: any): any;
/**
* 监听 channel当新消息到达调用 listener
* @param channel 通道名称
* @param listener 监听器函数
*/
on(channel: string, listener: (event: any, ...args: any[]) => void): void;
/**
* 添加一次性 listener 函数
* @param channel 通道名称
* @param listener 监听器函数
*/
once(channel: string, listener: (event: any, ...args: any[]) => void): void;
/**
* 为特定的 channel 从监听队列中删除特定的 listener 监听者
* @param channel 通道名称
* @param listener 要移除的监听器函数
*/
removeListener(channel: string, listener: (event: any, ...args: any[]) => void): void;
/**
* 移除所有的监听器,当指定 channel 时只移除与其相关的所有监听器
* @param channel 通道名称(可选)
*/
removeAllListeners(channel?: string): void;
/**
* 通过 channel 向主进程发送异步消息
* @param channel 通道名称
* @param args 传递的参数
*/
send(channel: string, ...args: any[]): void;
/**
* 发送消息到主进程
* @param channel 通道名称
* @param message 消息内容
* @param transfer 传输对象(可选)
*/
postMessage(channel: string, message: any, transfer?: MessagePort[]): void;
/**
* 通过 channel 发送消息到带有 webContentsId 的窗口
* @param webContentsId 目标窗口的 ID
* @param channel 通道名称
* @param args 传递的参数
*/
sendTo(webContentsId: number, channel: string, ...args: any[]): void;
/**
* 消息会被发送到 host 页面上的 <webview> 元素
* @param channel 通道名称
* @param args 传递的参数
*/
sendToHost(channel: string, ...args: any[]): void;
}
interface Electron {
ipcRenderer?: IpcRenderer;
}
const Renderer = (window.require && window.require('electron')) || (window as any).electron || {};
/**
* ipc
* 官方api说明https://www.electronjs.org/zh/docs/latest/api/ipc-renderer
*
* 属性/方法
* ipc.invoke(channel, param) - 发送异步消息invoke/handle 模型)
* ipc.sendSync(channel, param) - 发送同步消息send/on 模型)
* ipc.on(channel, listener) - 监听 channel, 当新消息到达,调用 listener
* ipc.once(channel, listener) - 添加一次性 listener 函数
* ipc.removeListener(channel, listener) - 为特定的 channel 从监听队列中删除特定的 listener 监听者
* ipc.removeAllListeners(channel) - 移除所有的监听器,当指定 channel 时只移除与其相关的所有监听器
* ipc.send(channel, ...args) - 通过channel向主进程发送异步消息
* ipc.postMessage(channel, message, [transfer]) - 发送消息到主进程
* ipc.sendTo(webContentsId, channel, ...args) - 通过 channel 发送消息到带有 webContentsId 的窗口
* ipc.sendToHost(channel, ...args) - 消息会被发送到 host 页面上的 <webview> 元素
*/
/**
* ipc
*/
const ipc: IpcRenderer | undefined = Renderer.ipcRenderer;
/**
* 是否为EE环境
*/
const isEE: boolean = ipc ? true : false;
export {
type IpcRenderer,
type Electron,
Renderer,
ipc,
isEE
};