SharedWorker
2025年01月19日
一、认识
SharedWorker
可以在多个标签页之间共享一个 Worker
,通过 port
对象通信。
二、实现
2.1 发布消息
创建 SharedWorker
self.onconnect = (event) => {
const port = event.ports[0];
port.onmessage = (event) => {
const message = event.data;
port.postMessage(`Echo: ${message}`);
};
};
引入 ServiceWorker
const worker = new SharedWorker('shared-worker.js');
// 接收消息
worker.port.onmessage = (event) => {
console.log('Received message:', event.data);
};
// 发送消息
worker.port.postMessage('Hello, Tabs!');
worker.port.start();
发布消息
const worker = new SharedWorker('shared-worker.js');
// 接收消息
worker.port.onmessage = (event) => {
console.log('Received message:', event.data);
};
// 发送消息
worker.port.postMessage('Hello, Tabs!');
worker.port.start();
2.2 接收消息
创建 SharedWorker
self.onconnect = (event) => {
const port = event.ports[0];
port.onmessage = (event) => {
const message = event.data;
port.postMessage(`Echo: ${message}`);
};
};
引入 ServiceWorker
const worker = new SharedWorker('shared-worker.js');
// 接收消息
worker.port.onmessage = (event) => {
console.log('Received message:', event.data);
};
// 发送消息
worker.port.postMessage('Hello, Tabs!');
worker.port.start();
发布消息
const worker = new SharedWorker('shared-worker.js');
// 接收消息
worker.port.onmessage = (event) => {
console.log('Received message:', event.data);
};
// 发送消息
worker.port.postMessage('Hello, Tabs!');
worker.port.start();