Spaces:
Runtime error
Runtime error
File size: 1,357 Bytes
fb38ec5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | import { IncomingMessage } from "http";
import { Duplex } from "stream";
import { WebSocket } from "ws";
import { EmitEvent } from "../../../types/enums.js";
import { WebSocketHandler, WebSocketHandlerContext } from "../../../types/websocket.js";
function handleRecordingWebSocket(context: WebSocketHandlerContext, ws: WebSocket) {
const { fastify } = context;
const messageHandler = (payload: { events: Record<string, any>[] }) => {
if (ws.readyState === WebSocket.OPEN) {
ws.send(JSON.stringify(payload.events));
}
};
fastify.cdpService.on(EmitEvent.Recording, messageHandler);
// TODO: handle inputs to browser from client
ws.on("message", async (message) => {});
ws.on("close", () => {
fastify.log.info("Recording WebSocket connection closed");
fastify.cdpService.removeListener(EmitEvent.Recording, messageHandler);
});
ws.on("error", (err) => {
fastify.log.error({ err }, "Recording WebSocket error");
});
}
export const recordingHandler: WebSocketHandler = {
path: "/v1/sessions/recording",
handler: (
request: IncomingMessage,
socket: Duplex,
head: Buffer,
context: WebSocketHandlerContext,
) => {
context.fastify.log.info("Connecting to recording events...");
context.wss.handleUpgrade(request, socket, head, (ws) => handleRecordingWebSocket(context, ws));
},
};
|