diff options
author | Matt Mastracci <matthew@mastracci.com> | 2023-06-06 07:58:18 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-06 07:58:18 -0600 |
commit | df76a062fa93899a614194a34f7b7c281f9dbac5 (patch) | |
tree | 4de33bf780c637b4bf201dbdf111f6f67d3b94f2 /ext/websocket/02_websocketstream.js | |
parent | 42991017e9af59d6a5cb6b523228c62f1c32380e (diff) |
perf(ext/websocket): Make send sync for non-stream websockets (#19376)
No need to go through the async machinery for `send(String | Buffer)` --
we can fire and forget, and then route any send errors into the async
call we're already making (`op_ws_next_event`).
Early benchmark on MacOS:
Before: 155.8k msg/sec
After: 166.2k msg/sec (+6.6%)
Co-authored-by: Bartek IwaĆczuk <biwanczuk@gmail.com>
Diffstat (limited to 'ext/websocket/02_websocketstream.js')
-rw-r--r-- | ext/websocket/02_websocketstream.js | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/ext/websocket/02_websocketstream.js b/ext/websocket/02_websocketstream.js index 00d5bdaec..be1001eb6 100644 --- a/ext/websocket/02_websocketstream.js +++ b/ext/websocket/02_websocketstream.js @@ -34,8 +34,8 @@ const { Uint8ArrayPrototype, } = primordials; const { - op_ws_send_text, - op_ws_send_binary, + op_ws_send_text_async, + op_ws_send_binary_async, op_ws_next_event, op_ws_create, op_ws_close, @@ -210,11 +210,11 @@ class WebSocketStream { const writable = new WritableStream({ write: async (chunk) => { if (typeof chunk === "string") { - await op_ws_send_text(this[_rid], chunk); + await op_ws_send_text_async(this[_rid], chunk); } else if ( ObjectPrototypeIsPrototypeOf(Uint8ArrayPrototype, chunk) ) { - await op_ws_send_binary(this[_rid], chunk); + await op_ws_send_binary_async(this[_rid], chunk); } else { throw new TypeError( "A chunk may only be either a string or an Uint8Array", |