import { Server } from 'http' import { Socket } from 'net' import log from 'src/log' export function enableDestroyServer(server: Server) { const connections: Record = {} server.on('connection', function (socket: Socket) { const key = `${socket.remoteAddress || ''}:${socket.remotePort || ''}` connections[key] = socket socket.on('close', function () { delete connections[key] }) }) return function destroyServer(cb?: (err?: Error) => void) { log.verbose('cone', 'destroy server') server.close(cb) Object.keys(connections).forEach((key) => { log.verbose('cone', 'destroy server connection') connections[key].destroy() }) } }