Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript res.end()之后未关闭Resify(节点)连接_Javascript_Node.js_Restify - Fatal编程技术网

Javascript res.end()之后未关闭Resify(节点)连接

Javascript res.end()之后未关闭Resify(节点)连接,javascript,node.js,restify,Javascript,Node.js,Restify,我们有一个Node/Restify应用程序,我对此路由有问题(一些代码被省略,因此请忽略缺少的标识符): 问题是,在发送输出后,与客户端的连接没有关闭,即使我调用res.end()!(res只是标准模块的包装)。注释掉return next()没有任何区别。 我可以在控制台上看到“已结束”,我知道内容已发送到客户端,因为如果我强制终止连接(通过简单地终止节点进程),客户端将拥有所有输出 我做错了什么 编辑 取而代之的是,删除内容长度标题可以使其正常工作。为什么呢?(使用该标题的建议是 编辑2 B

我们有一个Node/Restify应用程序,我对此路由有问题(一些代码被省略,因此请忽略缺少的标识符):

问题是,在发送输出后,与客户端的连接没有关闭,即使我调用res.end()!(res只是标准模块的包装)。
注释掉
return next()
没有任何区别。
我可以在控制台上看到“已结束”,我知道内容已发送到客户端,因为如果我强制终止连接(通过简单地终止节点进程),客户端将拥有所有输出

我做错了什么

编辑 取而代之的是,删除
内容长度
标题可以使其正常工作。为什么呢?(使用该标题的建议是

编辑2
Buffer.bytellength(result)
的值是4478字节,但客户端(邮递员)下载的数据是4110字节,这可能就是连接未关闭的原因(客户端希望收到更多数据)。这是怎么可能的?

连接最有可能通过
keep alive
保持活动状态。为什么必须终止连接?这是一个API服务器,我正在和Postman一起测试;没有办法维持生命。必须终止连接,否则客户端仍在等待输出!(邮递员在连接终止之前不会显示结果)
server.post('/report', requireAuth, function (req, res, next) {
    generateReport(err, result, extension, contentType) {
        // Filename for the report
        var filename = 'Report_' + moment().format('YYYY-MM-DD_HH:mm:ss')
        
        // Output the result directly with a lower-level APIs
        res.writeHead(200, {
            'Content-Length': Buffer.byteLength(result),
            'Content-Type': contentType,
            'Content-Disposition': 'attachment;filename='+filename+'.'+extension
        })
        res.write(result, 'utf8')
        res.end()
        console.log('ended')
        
        return next()
    }
})