我試圖使用Connect來提供靜態內容,但是對於大文件(> 40KB),發送了第一個40,960字節塊(有時是32,940字節),然後傳輸休眠2分鐘,然後傳輸完成。當我將流傳遞給響應時,我發現它會發生(這是Connect發送響應的方式)。Node.js:響應的管道流通過HTTPS凍結
這裏是一個代碼重新產生此,在節點0.6.2,在Windows和Linux,有48980個字節的文件:
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
,我cannnot重現:
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);
我做錯什麼了嗎?
這個工作沒有證書嗎? –
它在HTTP中工作。這是你「沒有證書」的意思嗎? – Jazz