背景与价值多标签页同时连接后端会造成资源浪费与竞态;共享连接降低压力并统一调度。启动与连接// main.js

const worker = new SharedWorker('/shared.js');

worker.port.start();

worker.port.postMessage({ type: 'join' });

worker.port.onmessage = (e) => handle(e.data);

共享端实现// shared.js

const ports = [];

let ws;

onconnect = (e) => {

const port = e.ports[0];

ports.push(port);

port.onmessage = (msg) => {

const data = msg.data;

if (data.type === 'join') {

if (!ws) { ws = new WebSocket('wss://example.com'); ws.onmessage = (m) => broadcast(m.data); }

}

};

port.start();

};

function broadcast(data) { for (const p of ports) p.postMessage(data); }

指标验证(Chrome 128/Edge 130)连接数量:多标签页复用后下降至 1;服务器会话压力下降 60%–80%。稳定性:断线重连一致,由 SharedWorker 统一处理;无竞态。回退策略不支持环境:回退为 BroadcastChannel + 每页独立连接并限流。测试清单多页同步:消息广播与状态一致;连接仅保持一条。弱网重连:统一重连策略生效,所有页面状态恢复。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部