openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
29 lines (28 loc) • 822 B
JavaScript
import { c as WEBSOCKET_CLOSE_GRACE_MS } from "./server-constants-BH_EolwD.mjs";
//#region src/gateway/server/connection-transport-close.ts
const closingTransports = /* @__PURE__ */ new WeakSet();
function closeGatewayTransportWithGrace(socket, code, reason) {
if (closingTransports.has(socket)) return;
closingTransports.add(socket);
const handleClose = () => {
clearTimeout(fallback);
socket.off("close", handleClose);
closingTransports.delete(socket);
};
const terminate = () => {
try {
socket.terminate();
} catch {}
};
socket.once("close", handleClose);
const fallback = setTimeout(terminate, WEBSOCKET_CLOSE_GRACE_MS);
fallback.unref?.();
try {
socket.close(code, reason);
} catch {
clearTimeout(fallback);
terminate();
}
}
//#endregion
export { closeGatewayTransportWithGrace as t };