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

  1. 安装
    npm i capnweb
  2. 客户端代码示例
    import { newWebSocketRpcSession } from "capnweb";
    let api = newWebSocketRpcSession("wss://example.com/api");
    let result = await api.hello("World");
    console.log(result); // 输出: Hello, World!
  3. 服务器端代码示例 (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

声明:本站资源均整理自互联网,版权归原作者所有,仅供学习交流使用,请勿直接商用,若需商用请购买正版授权。因违规使用产生的版权及法律责任由使用者自负。部分资源可能包含水印或引流信息,请自行甄别。若链接失效可联系站长尝试补链。若侵犯您的权益,请邮件(将 # 替换为 @)至 feedback#tgoos.com,我们将及时处理删除。转载请保留原文链接,感谢支持原创。