用途
Electrobun RPC Patterns 是一套针对 Electrobun 桌面应用的高级 RPC 通信模式集合,目标是实现类型安全、高性能的主进程(main)与 WebView 之间的双向通信。它适用于需要在桌面应用内进行复杂数据交互、文件操作、命令执行、实时更新推送等场景的开发者。
主要能力
类型安全 RPC
通过创建主进程与 WebView 都能导入的共享类型文件(如 src/types/rpc.ts),定义 MainRpcHandlers 与 WebviewRpcHandlers 接口,使双方在调用与定义处理器时都能获得完整的类型推断和 IntelliSense 检查。主进程使用 win.defineRpc<MainRpcHandlers>({...}) 定义处理器,WebView 使用 electroview.defineRpc<WebviewRpcHandlers>({...}) 定义处理器,并通过类型断言调用对端方法。
错误处理
提供自定义错误类型体系,包括 RpcError、ValidationError、NotFoundError,支持错误码(如 VALIDATION_ERROR、NOT_FOUND、SAVE_ERROR)与详细信息。主进程在处理器中校验输入、抛出结构化错误,WebView 根据错误码分支处理。还包含 withRetry 重试策略,支持最大重试次数与递增延迟。
性能优化
- 批处理请求:BatchRpc 类将短时间内的多个调用合并为一次 executeBatch 请求,减少通信往返。
- 缓存层:CachedRpc 类基于方法名与参数生成缓存键,支持 TTL(示例为 1 分钟)与按方法或全量失效。
- 流式数据:支持基于分块(chunk)的流式传输,主进程用 async* 生成器逐块 yield 文件内容或日志行,WebView 用 for await 消费并更新进度。
- 事件驱动更新:DataService 维护监听器集合,通过 fs.watch 等来源触发事件,主进程将更新推送到 WebView 的 handleUpdate 处理器。
高级模式
- 请求/响应关联:CorrelatedRpc 为每个请求生成唯一 ID,维护 pending 映射与超时(示例 30 秒),通过 handleResponse 处理器匹配响应。
- 双向数据同步:DataSync 类通过 syncing 标志避免同步回环,支持 syncToMain、pull 与从主进程推送的 syncFromMain。
使用方式
资料中给出的使用方式为代码示例形式:先定义共享类型文件,再分别在主进程(src/bun/main.ts)与 WebView(src/views/mainview/index.ts)中导入类型并定义 RPC 处理器,然后通过类型断言调用对端方法。批处理、缓存、流式、事件、关联请求与数据同步等模式均以可复制的类或函数形式提供,按需引入即可。
适用场景
- 需要在 Electrobun 桌面应用中实现主进程与 WebView 双向通信。
- 希望借助 TypeScript 在编译期保证 RPC 接口一致性。
- 需要处理文件读写、命令执行、用户数据查询等主进程能力暴露。
- 需要批量请求、缓存、流式传输或实时事件推送以优化性能。
- 需要结构化错误处理与重试机制。
限制
资料未提供关于安装命令、依赖版本、平台支持范围、性能基准或收费信息,这些内容暂未提供。示例代码中的部分实现(如 reader.closed 用于计算进度、this.handlers 在 executeBatch 中的引用方式)为资料原文所给,实际使用时需结合 Electrobun 当前 API 验证。