diff options
| author | Benjamin Gruenbaum <benjamingr@gmail.com> | 2020-11-10 05:34:42 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-11-10 14:34:42 +1100 |
| commit | 94b68f90697954292f4355cf91e7f75868d8d664 (patch) | |
| tree | 82c2c6e70d4ac2af0f24f8821732e24ad6fc256b /cli/rt/27_websocket.js | |
| parent | 0982056ff64368451c38b622de90f62fbade89fd (diff) | |
fix(cli/rt): dom handler order in websocket (#8320)
Diffstat (limited to 'cli/rt/27_websocket.js')
| -rw-r--r-- | cli/rt/27_websocket.js | 23 |
1 files changed, 5 insertions, 18 deletions
diff --git a/cli/rt/27_websocket.js b/cli/rt/27_websocket.js index c0790d14d..675c1e836 100644 --- a/cli/rt/27_websocket.js +++ b/cli/rt/27_websocket.js @@ -2,7 +2,7 @@ ((window) => { const core = window.Deno.core; - const { requiredArguments } = window.__bootstrap.webUtil; + const { requiredArguments, defineEventHandler } = window.__bootstrap.webUtil; const CONNECTING = 0; const OPEN = 1; const CLOSING = 2; @@ -63,12 +63,10 @@ const errEvent = new ErrorEvent("error"); errEvent.target = this; - this.onerror?.(errEvent); this.dispatchEvent(errEvent); const event = new CloseEvent("close"); event.target = this; - this.onclose?.(event); this.dispatchEvent(event); core.close(this.#rid); }); @@ -76,7 +74,6 @@ this.#readyState = OPEN; const event = new Event("open"); event.target = this; - this.onopen?.(event); this.dispatchEvent(event); this.#eventLoop(); @@ -86,12 +83,10 @@ const errEvent = new ErrorEvent("error"); errEvent.target = this; - this.onerror?.(errEvent); this.dispatchEvent(errEvent); const closeEvent = new CloseEvent("close"); closeEvent.target = this; - this.onclose?.(closeEvent); this.dispatchEvent(closeEvent); } }).catch((err) => { @@ -102,12 +97,10 @@ { error: err, message: err.toString() }, ); errorEv.target = this; - this.onerror?.(errorEv); this.dispatchEvent(errorEv); const closeEv = new CloseEvent("close"); closeEv.target = this; - this.onclose?.(closeEv); this.dispatchEvent(closeEv); }); } @@ -159,11 +152,6 @@ return this.#url; } - onopen = () => {}; - onerror = () => {}; - onclose = () => {}; - onmessage = () => {}; - send(data) { requiredArguments("WebSocket.send", arguments.length, 1); @@ -241,7 +229,6 @@ reason, }); event.target = this; - this.onclose?.(event); this.dispatchEvent(event); core.close(this.#rid); }); @@ -272,7 +259,6 @@ origin: this.#url, }); event.target = this; - this.onmessage?.(event); this.dispatchEvent(event); this.#eventLoop(); @@ -284,20 +270,17 @@ reason: message.reason, }); event.target = this; - this.onclose?.(event); this.dispatchEvent(event); } else if (message.type === "error") { this.#readyState = CLOSED; const errorEv = new ErrorEvent("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); } } @@ -319,6 +302,10 @@ }, }); + defineEventHandler(WebSocket.prototype, "message"); + defineEventHandler(WebSocket.prototype, "error"); + defineEventHandler(WebSocket.prototype, "close"); + defineEventHandler(WebSocket.prototype, "open"); window.__bootstrap.webSocket = { WebSocket, }; |
