1
我的節點/快速應用程序有一個端點,用於代理來自使用服務器發送事件的內部服務的數據流。這意味着內部服務將繼續在永恆中傳輸數據,直到連接關閉。如何關閉節點中的無限制和管道流請求?
它運行良好,但是當瀏覽器關閉與我的節點應用程序的連接時,到內部服務的管道連接保持打開狀態,導致內部服務有大量打開/未使用的連接。
所以我試圖強制關閉節點連接關閉時管道連接,但似乎無法弄清楚如何做到這一點。
代碼看起來像這樣。管道使用request/request
庫。
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
});
});
除非你正在流式傳輸文件下載,你有沒有使用'socket.io'來代替? – peteb
@peteb是的我做過了,但是對於我的用例來說SSE更可取。不管怎麼說,還是要謝謝你! – hampusohlsson