Steel / api /src /plugins /browser-socket /handlers /logs.handler.ts
supernovagateway's picture
Upload folder using huggingface_hub
fb38ec5 verified
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 handleLogsWebSocket(context: WebSocketHandlerContext, ws: WebSocket) {
const { fastify } = context;
const messageHandler = (payload: { pageId: string }) => {
if (ws.readyState === WebSocket.OPEN) {
ws.send(JSON.stringify([payload]));
}
};
fastify.cdpService.on(EmitEvent.Log, messageHandler);
ws.on("error", (err) => {
fastify.log.error({ err }, "Logs WebSocket error");
});
ws.on("close", () => {
fastify.log.info("Logs WebSocket connection closed");
fastify.cdpService.removeListener(EmitEvent.Log, messageHandler);
});
}
export const logsHandler: WebSocketHandler = {
path: "/v1/sessions/logs",
handler: (
request: IncomingMessage,
socket: Duplex,
head: Buffer,
context: WebSocketHandlerContext,
) => {
context.fastify.log.info("Connecting to logs...");
context.wss.handleUpgrade(request, socket, head, (ws) => handleLogsWebSocket(context, ws));
},
};