diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2022-11-01 16:06:06 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-01 16:06:06 +0100 |
commit | f5cb26a82fc74749c03c7c91a80de8df05d7a2e1 (patch) | |
tree | b404f50535c0e066f0e49a3b449dd50c746d82d1 /ext/websocket/02_websocketstream.js | |
parent | 89c5aa85984eabd300818f8275e3970f12a89754 (diff) |
revert 9ea0ce61981aa09851c3d1e0a2b7dbd7f7a392f5 (#16501)
Closes https://github.com/denoland/deno/issues/16450
Diffstat (limited to 'ext/websocket/02_websocketstream.js')
-rw-r--r-- | ext/websocket/02_websocketstream.js | 40 |
1 files changed, 12 insertions, 28 deletions
diff --git a/ext/websocket/02_websocketstream.js b/ext/websocket/02_websocketstream.js index 876f4d0ed..598816d05 100644 --- a/ext/websocket/02_websocketstream.js +++ b/ext/websocket/02_websocketstream.js @@ -27,7 +27,6 @@ SymbolFor, TypeError, Uint8ArrayPrototype, - Uint32Array, } = window.__bootstrap.primordials; webidl.converters.WebSocketStreamOptions = webidl.createDictionaryConverter( @@ -169,15 +168,12 @@ PromisePrototypeThen( (async () => { while (true) { - const kind = new Uint32Array(2); - await core.opAsync( + const { kind } = await core.opAsync( "op_ws_next_event", create.rid, - kind, ); - /* close */ - if (kind[0] === 2) { + if (kind === "close") { break; } } @@ -241,46 +237,35 @@ await this.closed; }, }); - const pull = async (controller) => { - /* [event type, close code] */ - const eventBuf = new Uint32Array(2); - const value = await core.opAsync( + const { kind, value } = await core.opAsync( "op_ws_next_event", this[_rid], - eventBuf, ); - const kind = eventBuf[0]; + switch (kind) { - /* string */ - case 0: { + case "string": { controller.enqueue(value); break; } - /* binary */ - case 1: { + case "binary": { controller.enqueue(value); break; } - /* ping */ - case 3: { + case "ping": { await core.opAsync("op_ws_send", this[_rid], { kind: "pong", }); await pull(controller); break; } - /* closed */ - case 6: // falls through - /* close */ - case 2: { - const code = eventBuf[1]; - this[_closed].resolve({ code, reason: value }); + case "closed": + case "close": { + this[_closed].resolve(value); core.tryClose(this[_rid]); break; } - /* error */ - case 5: { + case "error": { const err = new Error(value); this[_closed].reject(err); controller.error(err); @@ -300,8 +285,7 @@ return pull(controller); } - const code = eventBuf[1]; - this[_closed].resolve({ code, reason: value }); + this[_closed].resolve(value); core.tryClose(this[_rid]); } }; |