import type { IncomingMessage, ServerResponse } from "node:http"; import {
logRejectedLargePayload,
parseContentLengthHeader,
} from "../logging/diagnostic-payload.js"; import type { GatewayAuthResult } from "./auth.js"; import { readJsonBody } from "./hooks.js";
export function watchClientDisconnect(
req: IncomingMessage,
res: ServerResponse,
abortController: AbortController,
onDisconnect?: () => void,
) { const sockets = Array.from( new Set(
[req.socket, res.socket].filter(
(socket): socket is NonNullable<typeof socket> => socket !== null,
),
),
); if (sockets.length === 0) { return () => {};
} const handleClose = () => {
onDisconnect?.(); if (!abortController.signal.aborted) {
abortController.abort();
}
}; for (const socket of sockets) {
socket.on("close", handleClose);
} return () => { for (const socket of sockets) {
socket.off("close", handleClose);
}
};
}
Messung V0.5 in Prozent
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.79Bemerkung:
(vorverarbeitet am 2026-06-10)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.