概述SharedWorker 在同源内可被多个页面连接,适合统一的网络连接、缓存与计算。通过 `connect` 事件获取 `MessagePort` 并进行消息广播。用法/示例// main
const sw = new SharedWorker('/shared.js')
sw.port.start()
sw.port.postMessage({ type: 'join', id: Date.now() })
sw.port.onmessage = e => console.log('broadcast', e.data)
// shared.js
const ports = []
onconnect = e => {
const port = e.ports[0]
ports.push(port)
port.onmessage = ev => {
for (const p of ports) p.postMessage(ev.data)
}
}
工程建议妥善管理端口与错误,避免泄漏与广播风暴;可按需做节流与去重。对关键共享资源进行锁与队列治理(结合 Web Locks)。在不支持环境回退至 BroadcastChannel 或服务器端协调。参考与验证MDN:SharedWorker — https://developer.mozilla.org/docs/Web/API/SharedWorkerHTML:Shared workers — https://html.spec.whatwg.org/multipage/workers.html#shared-workers

发表评论 取消回复