多实例示例
多实例演示使用独立 Subframe:父页面负责 Tab 和工具栏,每个 Tab 的 OnlyOffice Embed SDK 运行时都放在一个独立子域名页面中。
onlyoffice.localhost
├── rat.onlyoffice.localhost/subframe (🐀 鼠)
├── ox.onlyoffice.localhost/subframe (🐂 牛)
├── tiger.onlyoffice.localhost/subframe (🐅 虎)
├── rabbit.onlyoffice.localhost/subframe (🐇 兔)
├── dragon.onlyoffice.localhost/subframe (🐉 龙)
├── snake.onlyoffice.localhost/subframe (🐍 蛇)
├── horse.onlyoffice.localhost/subframe (🐎 马)
├── goat.onlyoffice.localhost/subframe (🐐 羊)
├── monkey.onlyoffice.localhost/subframe (🐒 猴)
├── rooster.onlyoffice.localhost/subframe (🐓 鸡)
├── dog.onlyoffice.localhost/subframe (🐕 狗)
└── pig.onlyoffice.localhost/subframe (🐖 猪)
生产环境将上述主机名替换为 rat.onlyoffice.agent-bridges.com 等固定 12 个槽位。每个子框架的响应都带有 Origin-Agent-Cluster: ?1。因此 SDK 的全局对象、事件总线、socket mock 和文档状态不会在多实例之间共享;父页只通过带 source、实例 ID 和精确目标 origin 校验的 postMessage RPC 控制子框架。
业务应用使用
@agentbridges-ai/onlyoffice-embed-sdk/compat/subframe 的
mountOfficeEditor / createOfficeEditor,并为每个活动实例分配不同的
getOfficeSubframeOrigin(slot)。正式入口生成带 runtime=compat、实例 ID、
父 origin 与随机 session token 的 URL;不应直接拼接或复制演示 RPC。
在线演示:站点路由 /docs/demos/multi
父页面源码:src/features/demo/tabs-multi-page.tsx
子框架页面:src/features/demo/onlyoffice-subframe-page.tsx
消息协议:src/features/demo/subframe-protocol.ts
在线演示
下方为可交互的多实例 Tab 编辑器。