diff options
author | crowlKats <13135287+crowlKats@users.noreply.github.com> | 2020-09-29 11:42:29 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-29 11:42:29 +0200 |
commit | 7713274efd4751b0e282dd5d6f3080b1ae492f38 (patch) | |
tree | e8a4b434fe5bbf56074774f61296a4cad1a8631e | |
parent | 71a8b1fe27ce3613e6e691ef5a17f3979d9d1625 (diff) |
fix(websocket): add missing close events and remove extra error event (#7606)
-rw-r--r-- | cli/rt/27_websocket.js | 36 |
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); } } } |