- 在线时间
- 478 小时
- 最后登录
- 2026-4-9
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7788 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2922
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1171
- 主题
- 1186
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
一. 使用BroadcastChannel
+ g: v% p& }4 y. s$ r( p, `1 E+ L6 U
const sendMsg = new BroadcastChannel('logout_channel'); ^2 s) ~1 M. V4 O, N
sendMsg.postMessage('清除缓存')
- ]: T* Y ^. s, W3 o9 QonMsg.onmessage = async (event) => {1 g3 G1 b! U6 E" n+ B
console.log('event清除缓存', event.data)
. F2 I+ I% i. E}. ]& w/ w3 n0 ]
; {3 G3 z; H* ^1 w6 P" g- p8 O+ o二. 使用SharedWorker* M6 K" ] b' u. c+ k- W
1.创建一个SharedWorker实例,并在其中编写处理消息的代码。0 C' I, _9 x2 v/ I+ o: z* k
; F6 J- _. L; ^) }6 Z" ~// shared-worker.js
- b' a- `+ m2 J4 ^& L1 D) [onconnect = function(e) {3 r* j0 H2 h" t7 ^ |, b3 i
var port = e.ports[0];. } A5 m4 l6 S0 j5 Y1 E* s
Z9 j) D- L, l1 m port.onmessage = function(e) {9 P8 ]8 M* O# s' b; ?
var message = e.data;1 q$ j1 d K' m* }0 W7 O
// 在这里处理接收到的消息. {9 h- y6 S4 z5 v6 [/ N* D
};
2 h6 Y0 ^, r0 {: X! D& f2 ?# q2 L( p2 n
port.start();% ^5 \; W& D6 n
};. _8 Y8 g2 A- U+ P" z" \5 R8 j
3 Y/ H) b6 A1 A/ W$ O6 @
在多个窗口中分别创建SharedWorker的端口,并发送消息。1 Q2 S0 |- D, k: _, ?
// window1.js3 y# U+ A8 T4 B6 ^
var worker = new SharedWorker('shared-worker.js');2 T/ K+ s+ A2 X5 [' c# o b0 V
var port = worker.port;
3 S+ `. h4 t2 q
' T$ y3 D$ o) e/ F: i- Wport.onmessage = function(e) {
$ t7 G; R% k0 s0 |+ L9 X var message = e.data;
% d4 i5 t. h F( z! M- e" l // 在这里处理接收到的消息
; ]" l7 c3 O- ^# M w};
' c1 C! u6 Q! i( \) X
( v) u! C% i ]6 @* @8 Mport.postMessage('Hello from window1!');
4 k; L% t. o+ O: m7 ^, A9 w# ]
% P/ W# ]2 z/ u, d% N7 b! ^6 Z// window2.js
2 s+ \6 e# R. i5 l# Uvar worker = new SharedWorker('shared-worker.js');
3 _+ X+ p+ N/ [var port = worker.port;
; ?# d# d5 `' y. ?
5 p- \ k$ O4 n1 {port.onmessage = function(e) {9 W$ O& ^( B' o" Z* e
var message = e.data;
& V* o/ U4 P( O; u2 ^9 ` // 在这里处理接收到的消息
, I* r; y9 S3 N/ s};
6 Q' G& |% \* T# p! E6 I8 P w2 u7 U: M8 z* s& u; [5 E
port.postMessage('Hello from window2!');% a% s5 c4 \+ N
) Y7 t" u6 _$ ^3 i8 L
在SharedWorker中处理接收到的消息,并向所有连接的窗口发送消息。
6 P6 H) K% G; I// shared-worker.js' x4 M- ?& j) `' L
onconnect = function(e) {
7 o* f) Q9 y: o/ c3 ` var port = e.ports[0]; F/ z6 `5 s) `6 p
- Q& `: l. ~( S1 d! G% D
port.onmessage = function(e) {
/ y2 l4 {8 j; ]* _+ [ var message = e.data;
9 I2 D+ Z9 ^: h' _ // 在这里处理接收到的消息5 C% s$ Q: P, R. _
X, | w/ T% Z
// 向所有连接的窗口发送消息( l8 U7 @& O/ u
e.source.postMessage('Hello from SharedWorker!'); E6 p c* s3 f! ^+ _& f' w# v
};2 |9 n4 ^! i2 F; N8 Q* p/ ?
* Q. A' k1 V0 C
port.start();
9 Q0 S# J1 ~+ Q};
% ^) b/ d) Y* F2 ^2 l: ?8 ^9 v% ^! \& u, v& P% n
$ Q8 J9 y- a( X8 V/ g W
8 s3 B; s, D8 g) u, P1 x& b: S7 k
|
zan
|