Management 管理入口
在独立 Host 中组合认证、管理投影与所选 HTTP carrier。
在独立 Host 中组合 Management
Management 由 @pluxel/services/management 提供。managementAccess() 安装认证权威,management() 在已有 Persistence 上安装管理投影,managementHttp() 将控制入口接入已选中的 HTTP carrier。三者都借用已存在的 Host,不创建物理 listener。
import { elysia } from '@pluxel/services/elysia'
import { persistence } from '@pluxel/services/persistence'
import { managementAccess } from '@pluxel/services/management/access'
import { management } from '@pluxel/services/management/service'
import { managementHttp } from '@pluxel/services/management/http'
const services = [
elysia(),
persistence({ mode: 'memory' }),
managementAccess(),
management(),
managementHttp(),
]自定义 carrier 可以借用 createManagementEndpoint():HTTP 请求交给 fetch(),WebSocket 升级先调用 prepareUpgrade(),再将实际连接交给返回的 connection。可信地址、TLS 与 origin 来自 carrier;缺失时按未知处理,不从请求头推断。
Vite 开发入口自动使用 Host 已校验的 PORTLESS_URL 作为管理会话的浏览器 origin;未配置时使用 Vite 监听 origin。该值不改变物理监听地址、客户端地址或 TLS 判定,也不信任请求中的转发头。
关闭管理入口会关闭连接、取消认证交接,并使尚未进入 Host 执行队列的请求失效。已经接受的变更继续完成,不因浏览器断开而回滚。入口不拥有 Host 或 listener。Workbench 可将会话工厂与 artifact handler 绑定到同一入口,浏览器使用同一认证连接。workbenchHttp() 只安装 Shell,不隐式安装管理入口;完整的显式组合示例同时声明 Workbench 准备依赖。官方 servicesPreset() 总是安装 managementHttp(),workbench: false 只关闭 Workbench。
自定义 carrier 从 @pluxel/services/management 根入口导入 createManagementEndpoint();浏览器管理 API 使用 /client、/session、/protocol,React 接入使用 /react。
读取管理快照
Management client 返回经过校验的不可变本地快照,调用方可直接读取或缓存,不需要复制 DTO 或释放 RPC result。客户端负责消费 transport envelope;领域 parser 负责字段、identity、集合引用等约束,并构造最终快照。配置、日志和表单中的任意数据叶子也与输入对象隔离。
Portable 数据只接受有限数值、字符串、boolean、null、稠密普通数组和普通数据对象;拒绝 accessor、非枚举业务字段、symbol、循环、显式 undefined 和额外数组属性。TypeScript 类型不会替代这些运行时校验。订阅返回的资源仍须由订阅者释放,不能当作快照放入缓存。数据与资源的选择见 API 契约。
最后更新于