chimurai / http-proxy-middleware

:zap: The one-liner node.js http-proxy middleware for connect, express, next.js and more
MIT License
10.68k stars 826 forks source link

expose the internal 'econreset' error event in proxy options #831

Open NiccsJ opened 1 year ago

NiccsJ commented 1 year ago

Describe the feature you'd love to see

In reference to https://github.com/chimurai/http-proxy-middleware/pull/763 & https://github.com/chimurai/http-proxy-middleware/pull/759

As of now, only a default log is being printed in these events, there's no way for the user to implement custom logic if these events occur. Would be great if either this event can be mapped to the 'onError' event handler, or if separate user-defined event handlers can be accepted just like the rest of the events.

current implementation

    proxy.on('econnreset', (error, req, res, target) => {
        logger.error(`[HPM] ECONNRESET: %O`, error);
        console.log('HERE');
    });
    // https://github.com/webpack/webpack-dev-server/issues/1642#issuecomment-1104325120
    proxy.on('proxyReqWs', (proxyReq, req, socket, options, head) => {
        socket.on('error', (error) => {
            logger.error(`[HPM] WebSocket error: %O`, error);
        });
    });
    logger.debug('[HPM] Subscribed to http-proxy events:', Object.keys(handlers));
}

My workaround code

    proxy.on('econnreset', handlers['error']);
    // https://github.com/webpack/webpack-dev-server/issues/1642#issuecomment-1104325120
    proxy.on('proxyReqWs', (proxyReq, req, socket, options, head) => {
        socket.on('error', (error) => {
            logger.error(`[HPM] WebSocket error: %O`, error);
        });
    });
    logger.debug('[HPM] Subscribed to http-proxy events:', Object.keys(handlers));
}

Additional context (optional)

No response