Skip to content

JavaScript/TypeScript Server API

Server API 位于 @nnrp/native-server。Browser package 不暴露 server entrypoint。

openBackendRuntime

创建 native backend runtime,但不立即启动 listener。

参数类型必填说明
optionsNnrpBackendRuntimeOptionsTransport policy、已安装 transport provider、环境/platform 覆盖与可选 FFI binding。
返回
Promise<NnrpBackendRuntime>
ts
import { openBackendRuntime } from "@nnrp/native-server";
import { createTcpTransportProvider } from "@nnrp/transport-tcp";

const runtime = await openBackendRuntime({
  transportPolicy: "force-tcp",
  transports: [createTcpTransportProvider()],
});

NnrpBackendRuntime.listen

创建 backend server listener。

参数类型必填说明
optionsNnrpListenOptions本地 endpoint、可选 transport policy 与可选 transport provider。
返回
NnrpServer
ts
const server = runtime.listen({ endpoint: "nnrp://0.0.0.0:4433" });

NnrpBackendRuntime.connect

从已有 backend runtime 创建 native client。适用于同一个 backend 进程同时管理 server 与 client 生命周期的场景。

参数类型必填说明
optionsNnrpConnectOptionsEndpoint、可选 transport policy、可选 transport provider 与可选 session defaults。
返回
NnrpClient

NnrpBackendRuntime.selectTransport

根据 peer manifest 选择 transport。

参数类型必填说明
optionsNnrpTransportSelectionOptionsPeer manifest 与可选 score 覆盖。
返回
NnrpTransportSelectionSummary

Preview4 Server Session 方法

NnrpServerSession.receive(options?) 返回与 client session 相同的 typed NnrpRuntimeEvent union,其中包括收到的控制帧、运行时对象帧与缓存帧。Server 使用以下方法发送增量状态:

方法MessageMetadata可选 tail
sendProgress(metadata, body?)ProgressProgressMetadataprogress body
sendPartialResult(metadata, body?)PartialResultPartialResultMetadatainline partial result
sendBackpressure(metadata)BackpressurePressureMetadata
sendCreditUpdate(metadata)CreditUpdatePressureMetadata
sendResultDropReason(metadata, diagnostic?)ResultDropReasonResultDropReasonMetadatadiagnostic bytes
sendTraceContext(metadata, body?)TraceContextTraceContextMetadatatrace attributes
sendRecoverableError(metadata, diagnostic?)ErrorRecoverableRecoverableErrorMetadatadiagnostic bytes
sendRetryAfter(metadata, diagnostic?)RetryAfterRetryAfterMetadatadiagnostic bytes
sendControl(messageType, metadata, tail?)任意允许 server 发送的 Preview4 control frame匹配的 runtime metadata 类型声明的 tail

所有方法返回 Promise<void>。Metadata/body 长度不匹配时必须在 frame 到达 carrier Provider 前失败。

Preview4 Server 对象与缓存方法

方法MessageMetadata可选 tail
declareObject(metadata, body?)ObjectDeclareObjectDescriptorMetadataobject metadata
referenceObject(metadata, body?)ObjectRefObjectReferenceMetadatareference metadata
releaseObject(metadata, diagnostic?)ObjectReleaseObjectReleaseMetadatadiagnostic bytes
patchObject(metadata, delta)ObjectPatchObjectDeltaMetadatadelta bytes
sendObjectDelta(metadata, delta)ObjectDeltaObjectDeltaMetadatadelta bytes
referenceCache(metadata, body?)CacheReferenceCacheReferenceMetadatacache metadata
reportCacheMiss(metadata, diagnostic?)CacheMissCacheMissMetadatadiagnostic bytes
invalidateCache(metadata)CacheInvalidateCacheInvalidateMetadata

最终 sendResult(result) 与 partial-result、object-delta frame 保持独立。

边界规则

拥有不能拥有
@nnrp/native-serverServer runtime、listen lifecycle、backend runtime lifecycle。TCP/QUIC artifact、browser code 或 client-only top-level helper。
@nnrp/native-clientClient runtime 与 session lifecycle。Server listener API。
@nnrp/transport-tcp / @nnrp/transport-quic / @nnrp/transport-ipc / @nnrp/transport-websocketTransport 行为与打包的 native artifact。Server 或 client role lifecycle。

选项类型

NnrpBackendRuntimeOptions

字段类型必填说明
transportPolicyNnrpTransportPolicy默认选择策略。
transportsreadonly NnrpTransportProvider[]已安装 native transport provider。见 Transport Provider
environmentRecord<string, string>Artifact 查找或诊断用环境变量覆盖。
platformstring测试和受控打包校验用 platform 覆盖。
ffiNnrpNativeFfiBinding受控部署和测试用显式 native binding。

NnrpListenOptions

字段类型必填说明
endpointstring本地监听 endpoint。
providerEndpointstring | URL显式载体本地 bind endpoint。
transportPolicyNnrpTransportPolicyListener 选择策略。
transportsreadonly NnrpTransportProvider[]本 listener 允许的 transport provider。

NnrpConnectOptions

字段类型必填说明
endpointstring远端 endpoint。
providerEndpointstring | URL显式载体本地 connect endpoint。
transportPolicyNnrpTransportPolicyConnection 选择策略。
transportsreadonly NnrpTransportProvider[]本连接允许的 transport provider。
sessionDefaultsNnrpSessionOptionssession 未设置字段时使用的默认值。

NnrpTransportSelectionOptions

字段类型必填说明
peerManifestNnrpCapabilityManifestPeer capability manifest。
providersreadonly NnrpTransportProvider[]需要评分的本地 provider。
policyNnrpTransportPolicySelection policy 覆盖。

NNRP Documentation