Skip to content

Commit b8735d8

Browse files
committed
🐛 修复重复监听问题 #388
会导致某些请求重复处理产生一些问题
1 parent ed57bf3 commit b8735d8

1 file changed

Lines changed: 9 additions & 5 deletions

File tree

packages/message/window_message.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
import { v4 as uuidv4 } from "uuid";
22
import { Message, MessageConnect, MessageSend } from "./server";
3+
import EventEmitter from "eventemitter3";
34

45
// 通过 window.postMessage/onmessage 实现通信
56

6-
import EventEmitter from "eventemitter3";
7-
87
export interface PostMessage {
98
postMessage(message: any): void;
109
}
@@ -167,13 +166,18 @@ export class ServiceWorkerMessageSend implements MessageSend {
167166

168167
constructor() {}
169168

169+
listened: boolean = false;
170+
170171
async init() {
171172
if (!this.target && self.clients) {
172173
const list = await self.clients.matchAll({ includeUncontrolled: true, type: "window" });
173174
this.target = list[0];
174-
self.addEventListener("message", (e) => {
175-
this.messageHandle(e.data);
176-
});
175+
if (!this.listened) {
176+
this.listened = true;
177+
self.addEventListener("message", (e) => {
178+
this.messageHandle(e.data);
179+
});
180+
}
177181
}
178182
}
179183

0 commit comments

Comments
 (0)