fix(iframe): [PKG-IFRAME-03] release failed setup and bind message peers

This commit is contained in:
Harvey Zhao committed 2026-09-13 00:03:37 +08:00
1 parent b8d03e7366
commit b8cdafedd1
23 files changed
+7940 -32

No files matched your search

@@ -0,0 +1,28 @@
import type { Packet, RequestHost } from './requests'
import { cancelRequests } from './requests'
interface ConnectionHost extends RequestHost {
url: string
onMessage: (event: MessageEvent<Packet>) => void
}
const connections = new WeakMap<ConnectionHost, () => void>()
export function connect(host: ConnectionHost): void {
const owner = window
const receiver = host.onMessage
connections.set(host, () => owner.removeEventListener('message', receiver))
owner.addEventListener('message', receiver)
host.$iframe.src = host.url
}
export function releaseConnection(host: ConnectionHost): void {
const disconnect = connections.get(host)
connections.delete(host)
try {
disconnect?.()
}
finally {
cancelRequests(host)
}
}