用途:以单条出站长连接 WebSocket 把当前 iii 引擎与另一个 iii 实例相连,使两侧函数可跨边界互相调用,属请求/响应模式,没有 trigger 类型。
主要能力:以配置驱动,核心是 forward 与 expose 两个列表字段,把两侧稳定函数 id 绑定起来;配置后调用方用常规 iii.trigger({ function_id, payload }) 即可跨桥,无需专用调用形式。forward 把本地 id 代理到远端函数(可设 timeout_ms,默认 30000);expose 把本地函数开放给远端调用(local_function 必填,remote_function 可选,默认同名)。另注册 bridge.invoke(调用远端并等待返回值,支持 timeout_ms)与 bridge.invoke_async(投递到发送队列后立即返回 null,忽略 timeout_ms),用于远端 id 运行时动态或临时探测。
用法:安装命令为 iii worker add bridge。配置在 configuration worker 的 bridge 条目中(Console → Configuration → Workers → bridge),多数改动热重载生效。url 为远端 iii 的 WebSocket 地址,回退顺序为 config.url → III_URL 环境变量 → ws://0.0.0.0:49134,改动后会重连到新远端。新添加的 forward/expose 条目在当前连接上实时注册。
限制:它是引擎内置 iii-bridge 的独立替代,两者注册相同 id(bridge.invoke、bridge.invoke_async 及 forward/expose id),内置仍在连接时该 worker 拒绝启动。优先用 forward:/expose: 别名,invoke 仅作应急。invoke 与 forward 调用会把任何失败折叠为 bridge_error,远端真实错误不会透出;invoke_async 为发射即忘,成功后仅表示消息入队。expose 调用例外,会原样转发本地函数的真实错误码、消息与堆栈。反序列化失败返回 deserialization_error。移除 forward/expose 条目不会注销处理器(SDK 无注销能力),该 id 仍可调用但返回 bridge_error,直到 worker 重启。具体部署的别名与开放 id 由运维按环境配置,本文不涉及。