gpt4 book ai didi

javascript - Node.js:管道流到响应在 HTTPS 上卡住

转载 作者:行者123 更新时间:2023-11-30 06:01:25 24 4
gpt4 key购买 nike

我正在尝试使用 Connect提供静态内容,但对于大文件(> 40KB),发送第一个 40,960 字节的 block (有时 32,940 字节),然后传输休眠 2 分钟,然后传输完成。我发现当我通过管道将流传输到响应时会发生这种情况(这就是 Connect 发送响应的方式)。

这是在 Windows 和 Linux 上的 Node 0.6.2 上用一个 48,980 字节的文件重现此代码:

var fs = require( "fs" ), https = require("https");

var privateKey = fs.readFileSync( 'privatekey.pem' ).toString();
var certificate = fs.readFileSync( 'certificate.pem' ).toString();
var options = {key: privateKey, cert: certificate};
var server = https.createServer( options,
function( req, res ) {
var path = __dirname + "/public" + req.url;
fs.stat(path, function(err, stat){
if( err ) {
res.writeHead(404, {'Content-Type': 'text/html'});
res.end(""+err);
} else {
res.writeHead(200, {
'Content-Type': 'text/html',
'Content-Length': stat.size});
var stream = fs.createReadStream(path);
stream.pipe(res);
}
} );
} ).listen(8364);

使用fs.readFile,我无法重现:

var fs = require( "fs" ), https = require("https");

var privateKey = fs.readFileSync( 'privatekey.pem' ).toString();
var certificate = fs.readFileSync( 'certificate.pem' ).toString();
var options = {key: privateKey, cert: certificate};
var server = https.createServer( options,
function( req, res ) {
fs.readFile(__dirname + "/public" + req.url, function(err, data){
if( err ) {
res.writeHead(404, {'Content-Type': 'text/html'});
res.end(""+err);
} else {
res.writeHead(200, {
'Content-Type': 'text/html',
'Content-Length': data.length});
res.end(data);
} } );
} ).listen(8364);

我做错了什么吗?

最佳答案

是这个问题:https://github.com/joyent/node/issues/2198

已在 Node 0.6.4 中修复!

关于javascript - Node.js:管道流到响应在 HTTPS 上卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8257544/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com