简介
IPC 通信通道与事件常量定义。集中管理框架内部使用的通道名和事件名,避免硬编码字符串。以 as const 对象导出——值为只读字符串字面量,可作为类型安全的常量使用。
导入
javascript
// ESM
import { Processes, SocketIO, Events, Receiver } from 'ee-core/const';
// CJS
const { Processes, SocketIO, Events, Receiver } = require('ee-core/const');也可从顶层入口导入:
javascript
// ESM
import { Processes, SocketIO, Events, Receiver } from 'ee-core';
// CJS
const { Processes, SocketIO, Events, Receiver } = require('ee-core');API
Processes
说明:进程间通信通道常量。用于主进程和渲染进程的 Electron IPC 消息通信。这些通道名遵循 ee# 前缀约定,以避免与用户自定义通道冲突。
| 属性 | 值 | 说明 |
|---|---|---|
showException | 'ee#showException' | 异常显示通道;渲染进程收到此通道消息后显示异常对话框 |
sendToMain | 'ee#sendToMain' | 子进程向主进程发送消息的通道 |
示例:
javascript
import { Processes } from 'ee-core';
// 在渲染进程中 — 监听异常显示
ipcRenderer.on(Processes.showException, (_event, err) => {
dialog.showErrorBox('Error', err.message);
});
// 在子进程中 — 向主进程发送消息
childProcess.send({ channel: Processes.sendToMain, data: payload });SocketIO
说明:SocketIO 通信通道常量。用于 Socket.IO 服务与第三方进程通信(Go/Python 后端等)。partySoftware 值是框架 Socket.IO 配置中的默认通道名。
| 属性 | 值 | 说明 |
|---|---|---|
partySoftware | 'socket-channel' | 第三方软件通信通道(默认 Socket.IO 通道名) |
示例:
javascript
import { SocketIO } from 'ee-core';
// SocketIO.partySoftware 作为配置中的默认通道
const config = getConfig();
console.log(config.socketServer.channel); // 'socket-channel' (SocketIO.partySoftware)Events
说明:进程生命周期事件常量。用于框架异常处理模块和子进程管理,标识特定进程退出和错误事件。
| 属性 | 值 | 说明 |
|---|---|---|
childProcessExit | 'ee#childProcess#exit' | 子进程退出事件 |
childProcessError | 'ee#childProcess#error' | 子进程错误事件 |
示例:
javascript
import { Events } from 'ee-core';
// 监听子进程生命周期事件
childProcess.on('exit', (code) => {
console.log(`Event: ${Events.childProcessExit}, code: ${code}`);
});
childProcess.on('error', (err) => {
console.log(`Event: ${Events.childProcessError}`, err);
});Receiver
说明:消息接收者类型常量。用于 IPC 消息路由,标识消息的目标接收者。决定框架如何分发来自子进程的消息。
| 属性 | 值 | 说明 |
|---|---|---|
childJob | 'job' | ChildJob 类型子进程 |
forkProcess | 'task' | Fork 进程(通用任务) |
all | 'all' | 所有接收者(广播) |
示例:
javascript
import { Receiver } from 'ee-core';
// 路由消息到特定接收者类型
const message = {
channel: 'controller/user/info',
event: 'request',
data: payload,
receiver: Receiver.childJob, // 目标:ChildJob 进程
};
// 广播给所有接收者
const broadcastMsg = {
...message,
receiver: Receiver.all,
};