Cap n Web:JavaScript/TypeScript 原生、低样板代码的对象能力 RPC 系统
你是否曾经被复杂的 RPC(远程过程调用)系统所困扰,需要编写大量的接口定义文件(如 Schema)和样板代码?Cap n Web 的出现,旨在彻底解决这个问题。它是一个专为 Web 技术栈设计的、JavaScript/TypeScript 原生的对象能力 RPC 系统,可以帮助开发者在浏览器、Cloudflare Workers、Node.js 等环境中轻松实现高效、表达力强的双向 RPC 通信。本文将带你全面了解这个潜力新星。
截至收录:
Cap n Web stars数:2340
Cap n Web forks数:70
Cap n Web项目目录截图
Cap n Web核心亮点
🌟 JavaScript/TypeScript 原生:无需定义 Schema,几乎零样板代码,像调用本地函数一样进行 RPC 调用,并与 TypeScript 完美集成。
🔄 对象能力模型:支持双向调用、传递函数和对象引用,实现强大的能力安全模式,表达力远超大多数 RPC 系统。
🚀 Promise 流水线:支持 Promise 流水线技术,允许在单个网络往返中执行一系列依赖调用,极大提升性能。
🌐 多传输协议支持:开箱即用地支持 HTTP、WebSocket 和 postMessage()
,并可轻松扩展至其他自定义传输协议。
Cap n Web快速开始
只需几步,你就能在本地运行起 Cap n Web
:
- 安装:
npm i capnweb
- 客户端代码示例:
import { newWebSocketRpcSession } from "capnweb"; let api = newWebSocketRpcSession("wss://example.com/api"); let result = await api.hello("World"); console.log(result); // 输出: Hello, World!
- 服务器端代码示例 (Cloudflare Workers):
javascript import { RpcTarget, newWorkersRpcResponse } from "capnweb"; class MyApiServer extends RpcTarget { hello(name) { return `Hello, ${name}!`; } } export default { fetch(request, env, ctx) { let url = new URL(request.url); if (url.pathname === "/api") { return newWorkersRpcResponse(request, new MyApiServer()); } return new Response("Not found", {status: 404}); } }
Cap n Web应用场景
场景一:构建交互式 Web 应用:在浏览器客户端与服务器之间建立长连接的 WebSocket 会话,支持服务器主动向客户端推送数据或调用客户端提供的回调函数。
场景二:微服务或 Serverless 函数间通信:在 Cloudflare Workers 或 Node.js 服务之间,使用 HTTP 批处理模式进行高效、低延迟的 RPC 调用,减少网络往返次数。
场景三:Web Worker 或 iframe 通信:利用 MessagePort
传输,在主线程与 Web Worker 或不同 iframe 之间实现类型安全、能力丰富的 RPC 交互。
用户案例:作为由 Cloudflare 创建并维护的项目,其设计理念与 Cloudflare Workers 内置 RPC 系统高度协同,具有良好的生态前景。
Cap n Web链接
cloudflare / capnweb项目地址:https://github.com/cloudflare/capnweb
本文地址:https://www.tgoos.com/12819