From 15c75b4c36a979e2aaf70256cc3cc89989e6785f Mon Sep 17 00:00:00 2001 From: Percs <83934299+Percslol@users.noreply.github.com> Date: Sun, 20 Oct 2024 23:25:38 -0500 Subject: [PATCH] fix: add binarytype support to websocket --- src/client/shared/requests/websocket.ts | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/client/shared/requests/websocket.ts b/src/client/shared/requests/websocket.ts index 748759c..7e71e0d 100644 --- a/src/client/shared/requests/websocket.ts +++ b/src/client/shared/requests/websocket.ts @@ -65,9 +65,25 @@ export default function (client: ScramjetClient, self: typeof globalThis) { barews.addEventListener("close", (ev) => { fakeEventSend(new CloseEvent("close", ev)); }); - barews.addEventListener("message", (ev) => { + barews.addEventListener("message", async (ev) => { + let payload = ev.data; + if (typeof payload === "string") { + // DO NOTHING + } else if ("byteLength" in payload) { + if (state.binaryType === "blob") { + payload = new Blob([payload]); + } else { + Object.setPrototypeOf(payload, ArrayBuffer.prototype); + } + } else if ("arrayBuffer" in payload) { + if (state.binaryType === "arraybuffer") { + payload = await payload.arrayBuffer(); + Object.setPrototypeOf(payload, ArrayBuffer.prototype); + } + } + const fakeev = new MessageEvent("message", { - data: ev.data, + data: payload, origin: ev.origin, lastEventId: ev.lastEventId, source: ev.source,