インメモリトランスポート
このモードとは
見出しへのリンクインメモリトランスポートでは、ホストとリモートが同じ JavaScript ランタイム上で動作します。
iframe や worker トランスポートの代わりに、リモートはホストチャネルを直接受け取ります:
const receiver = createReceiver()const root = createRemoteRoot(receiver.receive)これは統合テストでも使われている配線モデルです。
想定用途
見出しへのリンクこのモードは次の用途向けです:
- ローカル開発用のランタイムシェル。
- 統合 / 単体テストのベンチ。
- レンダリング同期の振る舞いを素早く診断するケース。
本番の隔離用途ではない
見出しへのリンクインメモリトランスポートは 本番の拡張隔離には推奨されません。
理由:
- sandbox 境界がない。
- プロセス / スレッド隔離がない。
- 実際のトランスポート挙動、たとえば遅延、シリアライズ、非同期リンク下での順序に関するシグナルが少ない。
- リモートコードが誤動作したときの影響範囲が大きい。
これはセキュリティ境界ではなく、開発・テスト用トポロジーとして扱ってください。
最小の接続例
見出しへのリンクimport { createApp, defineComponent, h } from 'vue'import { createReceiver } from '@omnicajs/vue-remote/host'import { HostedTree, createProvider } from '@omnicajs/vue-remote/host'import { createRemoteRoot, createRemoteRenderer, defineRemoteComponent } from '@omnicajs/vue-remote/remote'
import VSignalBadge from './components/VSignalBadge.vue'
const provider = createProvider({ VSignalBadge })const receiver = createReceiver()
// Host app (same runtime)createApp(defineComponent({ setup() { return () => h(HostedTree, { provider, receiver }) },})).mount('#host')
// Remote app (same runtime)const root = createRemoteRoot(receiver.receive, { components: ['VSignalBadge'],})
const VRemoteSignal = defineRemoteComponent<'VSignalBadge', { tone: 'neutral' | 'success' | 'warning'; label: string;}>('VSignalBadge')
const remote = createRemoteRenderer(root).createApp(defineComponent({ setup() { return () => h(VRemoteSignal, { tone: 'success', label: 'In-memory transport is active', }) },}))
remote.mount(root)await root.mount()await receiver.flush()実運用上の注意
見出しへのリンク- worker / iframe / ネットワークモード向けのテストは別に維持する。
- セキュリティ前提の検証にインメモリモードを使わない。
- まずこのモードで素早く反復し、その後で本番トランスポート上で確認する。