@cloudflare/puppeteer
Version:
Puppeteer fork for Cloudflare Browser Run (formerly Browser Rendering)
44 lines • 1.41 kB
JavaScript
import { debugError } from '../common/util.js';
import { packageVersion } from '../generated/version.js';
const FAKE_HOST = 'https://fake.host';
export class WorkersWebSocketTransport {
ws;
onmessage;
onclose;
sessionId;
static async create(endpoint, sessionId) {
const path = `${FAKE_HOST}/v1/devtools/browser/${sessionId}`;
const response = await endpoint.fetch(path, {
headers: {
Upgrade: 'websocket',
'cf-brapi-client': `@cloudflare/puppeteer@${packageVersion}`,
},
});
response.webSocket.accept();
return new WorkersWebSocketTransport(response.webSocket, sessionId);
}
constructor(ws, sessionId) {
this.ws = ws;
this.sessionId = sessionId;
this.ws.addEventListener('message', async (event) => {
this.onmessage?.(event.data);
});
this.ws.addEventListener('close', () => {
this.onclose?.();
});
this.ws.addEventListener('error', e => {
const message = e.message || 'Unknown error';
debugError(`WebSocket error: SessionID: ${sessionId} - ${message}`);
});
}
send(message) {
this.ws.send(message);
}
close() {
this.ws.close();
}
toString() {
return this.sessionId;
}
}
//# sourceMappingURL=WorkersWebSocketTransport.js.map