summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cli/rt/27_websocket.js36
1 files changed, 23 insertions, 13 deletions
diff --git a/cli/rt/27_websocket.js b/cli/rt/27_websocket.js
index ee114170d..76070ebee 100644
--- a/cli/rt/27_websocket.js
+++ b/cli/rt/27_websocket.js
@@ -72,11 +72,6 @@
this.dispatchEvent(event);
core.close(this.#rid);
});
-
- const event = new Event("error");
- event.target = this;
- this.onerror?.(event);
- this.dispatchEvent(event);
} else {
this.#readyState = OPEN;
const event = new Event("open");
@@ -100,13 +95,20 @@
this.dispatchEvent(closeEvent);
}
}).catch((err) => {
- const event = new ErrorEvent(
+ this.#readyState = CLOSED;
+
+ const errorEv = new ErrorEvent(
"error",
{ error: err, message: err.toString() },
);
- event.target = this;
- this.onerror?.(event);
- this.dispatchEvent(event);
+ errorEv.target = this;
+ this.onerror?.(errorEv);
+ this.dispatchEvent(errorEv);
+
+ const closeEv = new CloseEvent("close");
+ closeEv.target = this;
+ this.onclose?.(closeEv);
+ this.dispatchEvent(closeEv);
});
}
@@ -285,10 +287,18 @@
this.onclose?.(event);
this.dispatchEvent(event);
} else if (message.type === "error") {
- const event = new Event("error");
- event.target = this;
- this.onerror?.(event);
- this.dispatchEvent(event);
+ this.#readyState = CLOSED;
+
+ const errorEv = new Event("error");
+ errorEv.target = this;
+ this.onerror?.(errorEv);
+ this.dispatchEvent(errorEv);
+
+ this.#readyState = CLOSED;
+ const closeEv = new CloseEvent("close");
+ closeEv.target = this;
+ this.onclose?.(closeEv);
+ this.dispatchEvent(closeEv);
}
}
}