mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-25 08:01:20 -08:00
fix(iframe): [PKG-IFRAME-03] release failed setup and bind message peers
This commit is contained in:
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)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user