- 在线时间
- 463 小时
- 最后登录
- 2025-6-15
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7342 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2781
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1156
- 主题
- 1171
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
一. 使用BroadcastChannel O; J- Z" V5 \' D& ^
x3 J5 |- v8 C7 Econst sendMsg = new BroadcastChannel('logout_channel')3 U. m* g& T' z
sendMsg.postMessage('清除缓存')3 V, E% S% o8 L0 r3 w: G9 z
onMsg.onmessage = async (event) => {7 y8 C+ R- l6 g: u
console.log('event清除缓存', event.data)% L( I/ S$ V4 `2 z+ l0 Z
}
5 a3 D4 f) M8 o+ |$ F9 n$ X0 N5 a" V4 j# P* ~9 y' @+ k
二. 使用SharedWorker6 J# ^) D8 `0 M7 c# V) j+ [
1.创建一个SharedWorker实例,并在其中编写处理消息的代码。+ y. `+ ?( {4 @ O5 e- W
+ i( M, d. L, U5 }9 x// shared-worker.js
3 f$ d4 D9 p$ Lonconnect = function(e) {7 l& U3 X8 J) E
var port = e.ports[0];! n( ^1 }$ P& t# y! j
% V+ |' C; P; [$ K8 i$ R8 ]' K port.onmessage = function(e) {
0 g2 l& w# g4 Z: r var message = e.data;0 L! `3 a7 |1 i. T% a: K" I' |
// 在这里处理接收到的消息5 W0 U" c- c4 Y. `& Z) E
};
2 t6 q) J8 l1 o# h" ]# ]. ?
6 T% Z: _. _0 r6 Q1 K1 \ port.start();
0 r {/ G4 H& i/ ~, S};# |( q. I! X2 A0 J2 o5 ]) ]
- m/ {7 p9 \4 o# {" g. U! y6 b在多个窗口中分别创建SharedWorker的端口,并发送消息。
2 F: n0 Q, w6 V! Z6 l, c* V5 ?// window1.js
+ ~3 L2 \3 }! ]var worker = new SharedWorker('shared-worker.js');) i- G$ A& a: f# M, y
var port = worker.port;# G, J: c- C5 d8 y
: h. b2 O: d. ]* C
port.onmessage = function(e) {
! C( v% _! z9 @ var message = e.data;
: D {! U( q% P // 在这里处理接收到的消息
9 W- r* h5 |" K( w' u};* R; n ~& k1 S. k
: v. r, s- f( l3 r% W" R5 w
port.postMessage('Hello from window1!');
4 R8 Z* p6 u1 b Z9 [7 X* s6 B0 p; Y- U W% W+ I
// window2.js- W( t& `9 A, v! N; V3 e% R
var worker = new SharedWorker('shared-worker.js');
7 f0 V/ ?. J! q% a. {9 Xvar port = worker.port;
1 m& ?1 s& `' I9 q% `4 R" P- b% g) W2 I M: S9 F
port.onmessage = function(e) {
& t" z' K) J+ o) d9 ^, a var message = e.data;0 @- G8 m# N5 B. _/ q% w' @
// 在这里处理接收到的消息
$ H0 S y( I D};
7 K& V* Q+ P" T( i4 v) v+ |, T6 C* j0 g% e3 @$ d
port.postMessage('Hello from window2!');
: h" j1 q2 ]0 m: P2 E1 x3 e* o5 s, T3 Z# R
在SharedWorker中处理接收到的消息,并向所有连接的窗口发送消息。
% o! f1 I3 O% d; ^+ N" e// shared-worker.js
0 L i; a# [" c, jonconnect = function(e) {
+ M$ A" Z q6 _3 M var port = e.ports[0];& k1 @2 D, `$ u$ D
: c6 D8 z8 D M% }2 P7 l1 g
port.onmessage = function(e) {$ Z( ~7 M7 ~3 M+ q
var message = e.data;7 z) w. q7 J2 c( R& w. u) ?; k
// 在这里处理接收到的消息 s4 F9 _+ s7 H" ~ b6 d
1 F$ |( y8 V; l$ p) r
// 向所有连接的窗口发送消息
' D; |$ v( x0 a' w' O. D# a5 ? e.source.postMessage('Hello from SharedWorker!');6 z* @+ [- u( }2 \% j3 [5 ]
};) }" y* @" Z/ Z3 p
2 Y( n* d8 {; y' k port.start(); N% A3 F& w- k
};' y$ [/ N" x4 }( K; t; P; {
5 q5 k# ?7 u- B, L$ y. r0 X
$ Z* H5 \1 X' b1 }
5 s* A% U2 ]: j& I* r; f7 L |
zan
|