Skip to content

Commit f9fb776

Browse files
committed
fix(): dispatch onMessageClose only after retry limit exceeded
1 parent 39d27d4 commit f9fb776

File tree

3 files changed

+6
-6
lines changed

3 files changed

+6
-6
lines changed

packages/easyops-runtime/src/websocket/MessageDispatcher.spec.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,9 +136,8 @@ describe("MessageDispatcher", () => {
136136
);
137137
expect(consoleError).toHaveBeenCalledTimes(2);
138138

139-
expect(onClose).not.toBeCalled();
140139
server.close();
141-
expect(onClose).toBeCalledTimes(1);
140+
expect(onClose).not.toBeCalled();
142141

143142
client.reset();
144143
});

packages/easyops-runtime/src/websocket/MessageService.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ describe("MessageService", () => {
5353
wasClean: false,
5454
});
5555
expect(consoleError).toBeCalledWith("WebSocket error:", expect.anything());
56-
expect(onClose).toBeCalledTimes(1);
56+
expect(onClose).not.toBeCalled();
5757

5858
expect(consoleLog).toBeCalledWith(
5959
"WebSocket will reconnect after %d seconds",

packages/easyops-runtime/src/websocket/MessageService.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,6 @@ export class MessageService {
4747
}
4848
// eslint-disable-next-line no-console
4949
console.log("WebSocket close:", e);
50-
for (const listener of this.#closeListeners) {
51-
listener();
52-
}
5350
// Error code 1000 means that the connection was closed normally.
5451
if (e.code !== 1000) {
5552
this.#reconnect();
@@ -75,6 +72,10 @@ export class MessageService {
7572
if (this.#retryCount >= RETRY_LIMIT) {
7673
// eslint-disable-next-line no-console
7774
console.error("WebSocket connect retry limit exceeded");
75+
// Keep behavior as v2: emit close event only after retry limit exceeded
76+
for (const listener of this.#closeListeners) {
77+
listener();
78+
}
7879
return;
7980
}
8081
// Double the timeout for each retry

0 commit comments

Comments
 (0)