Skip to content

Commit 119b0a5

Browse files
committed
fix: use prepareWebsocketDataBrowser for pubsub
1 parent 5b80ddd commit 119b0a5

2 files changed

Lines changed: 9 additions & 3 deletions

File tree

src/bee.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ import { hashDirectory, streamDirectory, streamFiles } from './utils/chunk-strea
107107
import { assertCollection, makeCollectionFromFileList } from './utils/collection'
108108
import { makeCollectionFromFS } from './utils/collection.node'
109109
import { prepareWebsocketData } from './utils/data'
110+
import { prepareWebsocketData as prepareWebsocketDataBrowser } from './utils/data.browser'
110111
import { Duration } from './utils/duration'
111112
import { BeeArgumentError, BeeError } from './utils/error'
112113
import { fileArrayBuffer, isFile } from './utils/file'
@@ -1319,6 +1320,9 @@ export class Bee {
13191320
modeInstance.getPublisherHeaders() ?? undefined,
13201321
this.requestOptions.headers,
13211322
)
1323+
// Ensure binary frames are delivered as ArrayBuffer (not Blob) in browser environments.
1324+
// prepareWebsocketData handles ArrayBuffer but not Blob.
1325+
ws.binaryType = 'arraybuffer'
13221326

13231327
const PING_INTERVAL_MS = 50_000
13241328
let pingTimer: ReturnType<typeof setInterval> | null = null
@@ -1390,8 +1394,8 @@ export class Bee {
13901394
}
13911395
}
13921396

1393-
ws.onmessage = event => {
1394-
const data = prepareWebsocketData(event.data)
1397+
ws.onmessage = async event => {
1398+
const data = await prepareWebsocketDataBrowser(event.data)
13951399

13961400
if (data.length) {
13971401
handler.onMessage(modeInstance.decodeMessage(data), subscription)

src/utils/data.browser.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
export async function prepareWebsocketData(data: string | ArrayBuffer | Blob): Promise<Uint8Array> | never {
1+
import type { Data } from 'ws'
2+
3+
export async function prepareWebsocketData(data: Data | string | ArrayBuffer | Blob): Promise<Uint8Array> | never {
24
if (typeof data === 'string') {
35
return new TextEncoder().encode(data)
46
}

0 commit comments

Comments
 (0)