MCPcopy Create free account
hub / github.com/Sandpack/nodebox-runtime / waitForHandshake

Method waitForHandshake

packages/nodebox/src/messages.ts:113–145  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

111 }
112
113 private waitForHandshake() {
114 const handshakePromise = new DeferredPromise();
115
116 const handshakeListener = (message: MessageEvent) => {
117 const { data } = message;
118
119 debug('[message-receiver]: incoming', message);
120
121 if (data.type === 'internal/handshake') {
122 invariant(
123 message.ports.length > 0,
124 'Failed to confirm a MessageReceiver handshake: received event has no ports'
125 );
126
127 this.senderPort = message.ports[0];
128 this.addMessageListener();
129
130 debug('[message-receiver]: handshake received!', this.senderPort);
131
132 this.send('internal/handshake/done');
133 debug('[message-receiver]: finish handshake');
134 }
135 };
136
137 window.addEventListener('message', handshakeListener);
138 handshakePromise.then(() => {
139 window.removeEventListener('message', handshakeListener);
140 });
141
142 window.parent.postMessage({ type: 'internal/ready' }, '*');
143
144 return handshakePromise;
145 }
146
147 private addMessageListener(): void {
148 invariant(

Callers 1

constructorMethod · 0.95

Calls

no outgoing calls

Tested by

no test coverage detected