From 9be41192c56c7959f09a1a32c41bb2169aad70c9 Mon Sep 17 00:00:00 2001 From: tsctx <91457664+tsctx@users.noreply.github.com> Date: Tue, 7 May 2024 21:08:42 +0900 Subject: [PATCH] websocket: use FastBuffer --- lib/web/websocket/websocket.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/web/websocket/websocket.js b/lib/web/websocket/websocket.js index 1746d64c2ee..45a7f867cad 100644 --- a/lib/web/websocket/websocket.js +++ b/lib/web/websocket/websocket.js @@ -2,7 +2,7 @@ const { webidl } = require('../fetch/webidl') const { URLSerializer } = require('../fetch/data-url') -const { getGlobalOrigin } = require('../fetch/global') +const { environmentSettingsObject } = require('../fetch/util') const { staticPropertyDescriptors, states, sentCloseFrameState, opcodes } = require('./constants') const { kWebSocketURL, @@ -30,6 +30,8 @@ const { ErrorEvent } = require('./events') let experimentalWarned = false +const FastBuffer = Buffer[Symbol.species] + // https://websockets.spec.whatwg.org/#interface-definition class WebSocket extends EventTarget { #events = { @@ -66,7 +68,7 @@ class WebSocket extends EventTarget { protocols = options.protocols // 1. Let baseURL be this's relevant settings object's API base URL. - const baseURL = getGlobalOrigin() + const baseURL = environmentSettingsObject.settingsObject.baseUrl // 1. Let urlRecord be the result of applying the URL parser to url with baseURL. let urlRecord @@ -262,7 +264,7 @@ class WebSocket extends EventTarget { // increase the bufferedAmount attribute by the length of the // ArrayBuffer in bytes. - const value = Buffer.from(data) + const value = new FastBuffer(data) const frame = new WebsocketFrameSend(value) const buffer = frame.createFrame(opcodes.BINARY) @@ -283,7 +285,7 @@ class WebSocket extends EventTarget { // not throw an exception must increase the bufferedAmount attribute // by the length of data’s buffer in bytes. - const ab = Buffer.from(data, data.byteOffset, data.byteLength) + const ab = new FastBuffer(data, data.byteOffset, data.byteLength) const frame = new WebsocketFrameSend(ab) const buffer = frame.createFrame(opcodes.BINARY) @@ -307,7 +309,7 @@ class WebSocket extends EventTarget { const frame = new WebsocketFrameSend() data.arrayBuffer().then((ab) => { - const value = Buffer.from(ab) + const value = new FastBuffer(ab) frame.frameData = value const buffer = frame.createFrame(opcodes.BINARY)