# @appport/server 中文文档

规范地址：https://npmcn.com/package/%40appport/server/

版本：1\.3\.0
npm 元数据更新时间：2026-11-05T17:20:59.581Z
中文译文更新时间：2026-11-06T23:06:26.600Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40appport/server
原文对照：https://npmcn.com/package/%40appport/server/?lang=original
项目主页：https://github.com/rkendel1/appport#readme
源码仓库：https://github.com/rkendel1/appport

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：134 kB，35 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=20
- 运行依赖：3 个
- peer 依赖：@types/node \>=20
- 首次发布：2026-09-21T13:36:27.780Z
- 最新版本发布：2026-11-05T17:20:59.396Z
- 近 30 天下载量：2191（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：13（近 12 个月 13 个）

## 中文简介

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

## 安装

```sh
npm install @appport/server
```

也可以使用：`pnpm add @appport/server`、`yarn add @appport/server`、`bun add @appport/server`

## README

# @ appport/ 服务器

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

```ts
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` 解决来自运输提供的证书的身份。 应用端口 不认证;它代表由此产生的身份,并授权每个 不论是哪个运输公司交付的.

## 浏览器边界模式

### 直接浏览器模式

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

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

### 信任的边界模式

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

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

### 服务器模式

```text
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`,且仅限 所列出的能力:

```ts
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 是什么？

服务器侧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 和提交记录判断。

