如何在节点中closures一个无界的pipe道stream请求?

我的节点/快速应用程序有一个terminal代理来自内部服务的数据stream,使用服务器发送的事件。 这意味着内部服务将继续在永恒中传输数据,直到连接closures。

它运行良好,但是当浏览器closures与我的节点应用程序的连接时,到内部服务的pipe道连接保持打开状态,从而导致内部服务有大量打开/未使用的连接。

所以我试图强制closures节点连接closures时的pipe道连接,但似乎无法弄清楚如何做到这一点。

代码看起来像这样。 使用request/request库pipe道。

 import request from 'request'; app.get('/stream', (req, res) => { const stream = request.get({ url: 'https://internalservice.acme.com/stream' }) stream.on('error', console.log); stream.pipe(res); // When browser closes... req.on('close', () => { // ...close connection to internal service stream.destroy() // <-- doesn't work }); }); 

在Node中发出请求时,有abort()方法。 它将closures您的请求stream。

 req.on('close', () => { // ...close connection to internal service stream.abort() });