diff options
author | crowlKats <13135287+crowlKats@users.noreply.github.com> | 2021-05-01 20:52:13 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-01 20:52:13 +0200 |
commit | da911e741c0482b27ab7e5d96a26f6f0ff0b1d00 (patch) | |
tree | b241ddbe7d9e7b2abe7aafc76212d2c0d19fe92d /extensions/websocket/01_websocket.js | |
parent | 012da3ae1e74ca5ce9d91707b6262bd725a26fcc (diff) |
fix(extension/websocket): better websocket errors (#10458)
Diffstat (limited to 'extensions/websocket/01_websocket.js')
-rw-r--r-- | extensions/websocket/01_websocket.js | 56 |
1 files changed, 23 insertions, 33 deletions
diff --git a/extensions/websocket/01_websocket.js b/extensions/websocket/01_websocket.js index c77af4566..9fc608958 100644 --- a/extensions/websocket/01_websocket.js +++ b/extensions/websocket/01_websocket.js @@ -118,44 +118,32 @@ url: wsURL.href, protocols: protocols.join(", "), }).then((create) => { - if (create.success) { - this.#rid = create.rid; - this.#extensions = create.extensions; - this.#protocol = create.protocol; - - if (this.#readyState === CLOSING) { - core.opAsync("op_ws_close", { - rid: this.#rid, - }).then(() => { - this.#readyState = CLOSED; + this.#rid = create.rid; + this.#extensions = create.extensions; + this.#protocol = create.protocol; + + if (this.#readyState === CLOSING) { + core.opAsync("op_ws_close", { + rid: this.#rid, + }).then(() => { + this.#readyState = CLOSED; - const errEvent = new ErrorEvent("error"); - errEvent.target = this; - this.dispatchEvent(errEvent); + const errEvent = new ErrorEvent("error"); + errEvent.target = this; + this.dispatchEvent(errEvent); - const event = new CloseEvent("close"); - event.target = this; - this.dispatchEvent(event); - tryClose(this.#rid); - }); - } else { - this.#readyState = OPEN; - const event = new Event("open"); + const event = new CloseEvent("close"); event.target = this; this.dispatchEvent(event); - - this.#eventLoop(); - } + tryClose(this.#rid); + }); } else { - this.#readyState = CLOSED; - - const errEvent = new ErrorEvent("error"); - errEvent.target = this; - this.dispatchEvent(errEvent); + this.#readyState = OPEN; + const event = new Event("open"); + event.target = this; + this.dispatchEvent(event); - const closeEvent = new CloseEvent("close"); - closeEvent.target = this; - this.dispatchEvent(closeEvent); + this.#eventLoop(); } }).catch((err) => { this.#readyState = CLOSED; @@ -362,7 +350,9 @@ case "error": { this.#readyState = CLOSED; - const errorEv = new ErrorEvent("error"); + const errorEv = new ErrorEvent("error", { + message: value, + }); errorEv.target = this; this.dispatchEvent(errorEv); |