- 在线时间
- 482 小时
- 最后登录
- 2026-9-11
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7953 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2978
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1183
- 主题
- 1198
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
一. 使用BroadcastChannel% T- s6 h* J' h8 E8 F: f
+ Z0 _3 v6 R, q% ~9 i, |4 F) cconst sendMsg = new BroadcastChannel('logout_channel')
: P; [% ^% {6 w& x4 msendMsg.postMessage('清除缓存')
$ ~( W/ F$ M$ F5 D! ronMsg.onmessage = async (event) => {8 M& u1 b$ ~" s/ U, [1 L
console.log('event清除缓存', event.data)
9 P+ Y0 B# e! C0 S6 U}
+ Y7 q% c1 j8 [6 H' x d8 ?
$ V! N' q& F: K6 E( K f3 _二. 使用SharedWorker' ~4 A3 L. F7 m! f' k# @
1.创建一个SharedWorker实例,并在其中编写处理消息的代码。
9 @# I. Z9 t7 z& K
9 h$ E) W2 g0 ~0 F' A// shared-worker.js
) w& F% J/ y& \' X8 [9 ionconnect = function(e) {
3 z. N8 ^1 M! G2 p, C0 F5 F6 A7 b var port = e.ports[0];! p2 t: j. y6 S, e4 @4 c- ^
; H* Y4 I0 T' M2 e1 J port.onmessage = function(e) {. h* e1 k7 T- Z7 y. N
var message = e.data;% p C3 h3 c3 B6 v. _0 ~
// 在这里处理接收到的消息! W3 s& [* {! {
};
* Q9 ^$ b3 p( {8 O& m1 I8 v" K; u% n& ]
port.start();, J+ H1 E3 g$ H, \. ~; W
};! f! o) A! M) O) @! E/ U* j
0 W' E( f0 l, j! o
在多个窗口中分别创建SharedWorker的端口,并发送消息。2 \' Q9 ?$ }7 O* l+ {2 M* { s
// window1.js
6 j8 r, ^* r3 Z- t. @7 Ivar worker = new SharedWorker('shared-worker.js'); F( V; R# `7 p9 h- v
var port = worker.port;
, S9 ^% x+ p# P) H% `* z; A9 Q; ~8 C& W5 V! }
port.onmessage = function(e) {0 _6 b1 h# P9 Z1 J
var message = e.data;& F- |0 X. S9 N; |
// 在这里处理接收到的消息
& Z/ Z. q* }! o1 e- B8 }; a};
/ q& y; t' {' N* O# W7 I$ M; j4 e$ i( f3 B$ \0 k
port.postMessage('Hello from window1!');5 w- j: I6 V8 y# W% @9 h3 G7 y/ \
" ^. G) [6 d) ~. B; C. R8 F// window2.js/ ?7 s. n( e( g( e
var worker = new SharedWorker('shared-worker.js');
7 I8 H- v8 o5 |6 U& xvar port = worker.port;
7 w+ H& q7 ?$ M* ]4 E8 g. r. [
) N$ J: r" _- X+ I" E: I) [) pport.onmessage = function(e) {$ h: A2 H9 V. V. G) E
var message = e.data;
8 V3 R8 J# r4 H, l" ] // 在这里处理接收到的消息
6 S: p" r6 T. h! M};2 `% Q! d: V" C, I' Y. O/ m" V
[2 W+ H9 G. X8 Q* j4 t9 Iport.postMessage('Hello from window2!');
4 o: x- j5 v+ S; b0 {
$ H2 k( `/ }2 q& {在SharedWorker中处理接收到的消息,并向所有连接的窗口发送消息。5 \; y0 A) b N5 x! C
// shared-worker.js
4 j4 V) {3 I6 p; {onconnect = function(e) {
7 E7 w# b, N" f8 ?, R' \ var port = e.ports[0];
7 X& K" f6 @& v
2 o$ b$ P$ X; s5 h1 {$ E. A0 r N port.onmessage = function(e) {
9 U) h& g& j. v J v3 D2 G9 E! g var message = e.data;
# t' @; O5 J$ E6 R# [. a7 w& @1 D8 r // 在这里处理接收到的消息
: {+ i6 b- l1 `# g! _: [% a+ Z5 J. X/ Y7 s4 c7 z
// 向所有连接的窗口发送消息7 I2 g6 D# g; T8 a; U) ~
e.source.postMessage('Hello from SharedWorker!');
2 K- V% j0 S! T3 a& d };: J. c+ P% I& L
9 {; Q: B6 Q' ~6 b/ e7 | port.start();3 I$ B4 H L# z4 v/ i
};' @+ D( V9 ?2 K& J
2 W1 H; ^) s m$ B% K7 ?9 s) D" V; \2 u
- j; n5 h0 A) r7 r) b7 M D8 w' Y! f w |
zan
|