Node.js 关闭可读流

Node.js 关闭可读流,node.js,pipe,Node.js,Pipe,问题是我找不到如何停止刷新文件数据。我尝试了unpipe()方法。当从curl请求文件并关闭它时,它似乎起作用。但在关闭浏览器时,它不会停止刷新文件。并读取整个文件。我怎样才能阻止它 var http = require("http"), fs = require("fs"), url = require("url"); var stream; var requestHandlers = { video: function(request, response) {

问题是我找不到如何停止刷新文件数据。我尝试了
unpipe()
方法。当从curl请求文件并关闭它时,它似乎起作用。但在关闭浏览器时,它不会停止刷新文件。并读取整个文件。我怎样才能阻止它

var http = require("http"),
fs = require("fs"),
url = require("url");

var stream;

var requestHandlers = {

    video: function(request, response) {
        var totalbytes = 0;
        response.writeHead(200, {"Content-Type": "video/mp4"});

        stream = fs.createReadStream('video.mp4');
        stream.pipe(response);
        stream.on('data', function(chunk) {
            totalbytes += chunk.length;
        });

        stream.on('end', function(){
            console.log("Video connection ended. Total bytes sent %d", totalbytes);
        });

        stream.on('close', function(){
            console.log("Video connection closed. Total bytes sent %d", totalbytes);
        });

    }
}

var handle = {
    "/video.mp4": requestHandlers.video
};

var myServer = http.createServer(function (request, response) {

    var pathname = url.parse(request.url).pathname;
    console.log("Request for " + pathname + " received from " + request.connection.remoteAddress);

    if (typeof handle[pathname] === 'function') {
        handle[pathname](request, response);
    } else {
        response.writeHead(404, {"Content-Type": "text/html"});
        response.write("404 Not found");
        response.end();
    }

    request.on('close', function(){
//      stream.unpipe();    //does not help
        console.log("Connection closed");
    });
});

myServer.listen(5555);
console.log("Server started");

我很确定您需要连接到
主体
事件
onunload
,然后从那里向您的服务器进行API调用,以将其标记为停止。这也意味着,由于有多个用户,您需要某种类型的密钥来知道停止哪一个。有没有其他办法停止冲洗?如果使用unpipe()是正确的,那么我将考虑如何以及何时调用它。