Description
Checks
- I understand project setup issues should be asked on StackOverflow or in GitHub Discussions.
- I updated to latest
http-proxy-middleware
.
Describe the bug (be clear and concise)
I had an issue with my project where the memory is steadily increasing. When I turned on the profiling through chrome inspector, I get a warning of this
And when I checked and console.log the req.socket where the code of the library is creating the listener at, on every single request being made which result into invoking createHttpProxyMiddleware, it will always add an event listener to server.onClose, and the object was never cleared by the Garbage Collector.
Please see screenshot below
I've created a runner which triggered 50request at a time, and it created 50 close events without being cleared.
Step-by-step reproduction instructions
1. Turn on node --inspect on your nodejs application
2. Open chrome://inspect and make sure you are on debug mode
3. Fire 50 or more request, you shall see a warning which I've described above.
Expected behavior (be clear and concise)
Since request.connection has been deprected, hence request.socket which used in this line should only applicable for HPM with mode ws: true. For ws: false which is non websocket, should not need this kind of listener.
How is http-proxy-middleware used in your project?
****-***-*******@1.0.0 ***/***/****
├─┬ ***/***/****
│ └── http-proxy-middleware@2.0.6 deduped
└── http-proxy-middleware@2.0.6
What http-proxy-middleware configuration are you using?
this.proxy = createProxyMiddleware({
target: this.url,
ws: false,
pathRewrite: () => (prefix ? `${prefix}${path}` : `${path}`),
onProxyReq: (proxyReq: ClientRequest, req: Request) => {
proxyReq.setHeader('service-id', ServiceIdSnapApiGateway);
if (this.xApiKey) {
proxyReq.setHeader('x-api-key', this.xApiKey);
}
if (req.body) {
const contentType: string = proxyReq.getHeader('Content-Type') as string;
let bodyData;
if (contentType && contentType.includes('application/json')) {
bodyData = JSON.stringify(req.body);
} else if (contentType && contentType.includes('application/x-www-form-urlencoded')) {
bodyData = queryString.stringify(req.body);
}
if (bodyData) {
proxyReq.setHeader('Content-Length', Buffer.byteLength(bodyData));
proxyReq.write(bodyData);
}
}
},
onProxyRes: extendProxyRes,
changeOrigin: true,
logLevel: 'silent'
});
What OS/version and node/version are you seeing the problem?
Node 18.16.0
macOS Ventura v13.2.1
Memory 8gb
Chip Apple M1
Additional context (optional)
No response