@appport/server

中文文档
1.3.0发布于 2026/11/06Apache-2.0TypeScriptES Module近 30 天下载 2191

服务器侧AppPort协议运行时间与HTTP和WebSocket绑定.

中文使用文档
文档目录6 节
  1. 浏览器边界模式
  2. 直接浏览器模式
  3. 信任的边界模式
  4. 服务器模式
  5. 公开发现(1.1.0)
  6. 正在认证 permissionAuthorizer

@ appport/ 服务器

服务器侧协议运行时间及其网络绑定.

import { createServer } from "@appport/server";
import { serve } from "@appport/server/node";

const server = createServer({
  application,
  authenticate: ({ sessionId }) => sessions.resolve(sessionId)
});

const running = await serve({ server, port: 4400, cors: { origins: "*" } });

一个完全最小的提供者不需要其他的客户端连接: serve 广告,在清单中等等 /.well-known/appport,其实际结合的运输(http 时间 /appport,以及 websocket 时间 /appport/ws 除非你通过 websocket: false)作为同源路径. 它从不宣传它没有服务的终点。 过 advertise: false 广告 没什么,或者 transports 改为 createApplication 以广告方式发布其他信息(例如,在代理服务器后面有一个公共URL)。 如果一个 应用程序不发布运输广告, AppPort.discover 失败 INVALID_PROTOCOL 并说如此.

serve 在一个能力服务器上曝光:

路线目的
POST /appport请求和 NDJSON 流
GET /appport/events作为服务器事件的事件
GET /appport/manifest显示
GET /.well-known/appport发现
WS /appport/ws绑定 WebSocket

WebSocket端点是无依赖的 RFC 6455 执行:框架, 破碎、乒乓球和相近,每条信息有一个AppPort信封.

AppPortConnection 是WebSocket, IPC 和进程内使用的双倍半 运输。 它拥有订阅和流记,所以不订阅发行 资源和取消到达处理器.

对于边缘运行时间, createFetchHandler(binding) 返回标准 (Request) => Promise<Response>。 。 。 .

authenticate 解决来自运输提供的证书的身份。 应用端口 不认证;它代表由此产生的身份,并授权每个 不论是哪个运输公司交付的.

浏览器边界模式

直接浏览器模式

browser origin
  -> @appport/transport-http
  -> AppPort HTTP server with CORS/origin policy
  -> capability

配置 HTTP 绑定 cors 财务报告和审定财务报表 allowedOrigins 当浏览器说话时 直接到 Apport 服务器.

信任的边界模式

browser
  -> same-origin AppPort server
  -> server-side AppPort client / transport
  -> remote capability

信任的边界认证呼叫者, 授权能力, 应用 源代码政策,并使用服务器侧面证书进行下游 AppPort 调用. 浏览器从未收到这些可信任的证书.

服务器模式

node/server
  -> @appport/transport-http
  -> remote AppPort capability

在每个模式中,CORS会留在HTTP边界. 它不属于 AppPort 协议.

公开发现(1.1.0)

createServer({ application, publication }) 选择公开介绍 /appport/public 广告 /.well-known/appport缺席、残疾、政策不当或不一致均不公布。 名单仍按程序公布 所以 "没有发表"不是"秘密". 发现不是授权.

该政策有这种形式(第6条)PublicationPolicy 内 @appport/protocol; 除非 public 没错 true,且仅限 所列出的能力:

publication: {
  public: true,
  applicationDescription: false, // optional: include the manifest's application description
  capabilities: [{ name: "tasks.add", version: 1, purpose: true }] // purpose: include that capability's description
}

一个消费者的 AppPort.discoverApplication 结果报告 notPublishedCount:你没有列出的每一种明显能力,包括: 内置 appport.manifest 财务报告和审定财务报表 appport.ping,所以一个提供者 发布三个能力报告之一 4.

正在认证 permissionAuthorizer

permissionAuthorizer() 会议决定 permissions,但仅针对已识别的来电者:没有 principal 被作为未经认证的 UNAUTHORIZED ("需要认证"),不是 FORBIDDEN即使它带有权限. 两个都从那回来 authenticate数字 : { principal, session: { ..., principal, permissions } }被识别但缺乏 需要的许可获得 FORBIDDEN。 。 。 .

版本与发布记录

@appport/server 共发布 13 个版本,首次发布于 2026/09/21;过去 12 个月发布了 13 个版本。

版本发布日期距今
1.3.0latest2026/11/062 天前
1.2.02026/11/052 天前
1.1.62026/11/034 天前
1.1.52026/10/2810 天前
1.1.42026/10/2217 天前
1.1.32026/10/1919 天前

关于 @appport/server 的常见问题

@appport/server 是什么?

服务器侧AppPort协议运行时间与HTTP和WebSocket绑定.

如何安装 @appport/server?

在项目目录运行 npm install @appport/server,或使用 pnpm add / yarn add / bun add。

@appport/server 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@appport/server 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@appport/server 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@appport/server 可以商用吗?

@appport/server 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@appport/server 的下载量有多少?

根据 npm 官方下载统计,@appport/server 在 2026/10/07 – 2026/11/05 这 30 天内被下载 2,191 次,日均约 73 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@appport/server 还在维护吗?

最新版本 1.3.0 发布于 2026/11/06(2 天前);至今共发布 13 个版本,其中过去 12 个月发布了 13 个;首次发布于 2026/09/21。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。